{ "appName": { "message": "CinePlex" }, "appDescription": { "message": "Escanea servidores de Plex para encontrar contenido y lo muestra en la interfaz" }, "appTagline": { "message": "Películas, Series y Música" }, "appLocaleCode": { "message": "es-ES" }, "toggleNavigation": { "message": "Alternar Navegación" }, "searchPlaceholder": { "message": "Buscar películas o series..." }, "openMusicPlayer": { "message": "Abrir Reproductor de Música" }, "settings": { "message": "Ajustes" }, "navMovies": { "message": "Películas" }, "navSeries": { "message": "Series" }, "navPhotos": { "message": "Fotos" }, "navStats": { "message": "Estadísticas" }, "navFavorites": { "message": "Favoritos" }, "navHistory": { "message": "Historial" }, "navRecommendations": { "message": "Recomendaciones" }, "navMusic": { "message": "Música" }, "heroWelcome": { "message": "Bienvenido a CinePlex" }, "heroSubtitle": { "message": "Explora miles de películas y series." }, "addStream": { "message": "Añadir Stream" }, "moreInfo": { "message": "Más info" }, "popularMovies": { "message": "Películas Populares" }, "allGenres": { "message": "Todos los géneros" }, "allYears": { "message": "Todos los años" }, "sortPopular": { "message": "Más populares" }, "sortTopRated": { "message": "Mejor valoradas" }, "sortRecent": { "message": "Más recientes" }, "loadMore": { "message": "Cargar más" }, "photosBreadcrumbHome": { "message": "Álbumes" }, "selectServer": { "message": "Selecciona un servidor" }, "loading": { "message": "Cargando..." }, "photosEmptyState": { "message": "No se encontraron álbumes o fotos." }, "photosEmptyStateSub": { "message": "Por favor, selecciona un servidor o asegúrate de tener una librería de fotos en Plex." }, "statsTitle": { "message": "Estadísticas de la Librería" }, "statsAllTokens": { "message": "Todos los Tokens" }, "statsAnalyzing": { "message": "Analizando tu librería..." }, "statsActiveTokens": { "message": "Tokens Activos" }, "statsServersFound": { "message": "Servidores Encontrados" }, "statsUniqueMovies": { "message": "Películas Únicas" }, "statsUniqueSeries": { "message": "Series Únicas" }, "statsUniqueArtists": { "message": "Artistas Únicos" }, "statsTokenServers": { "message": "Servidores del Token" }, "statsChartMoviesByGenre": { "message": "Contenido por Género (Películas)" }, "statsChartSeriesByGenre": { "message": "Contenido por Género (Series)" }, "statsChartByDecade": { "message": "Contenido por Década" }, "recommendationsTitle": { "message": "Recomendaciones para ti" }, "historyTitle": { "message": "Historial de Visualización" }, "clearHistory": { "message": "Borrar Todo" }, "consoleTitle": { "message": "Consola de Escaneo Plex" }, "footerCredit": { "message": "Una interfaz para tu universo Plex." }, "backButton": { "message": "Atrás" }, "closeTrailer": { "message": "Cerrar tráiler" }, "close": { "message": "Cerrar" }, "photoViewer": { "message": "Visor de fotos" }, "previous": { "message": "Anterior" }, "next": { "message": "Siguiente" }, "notificationTemplateText": { "message": "Notificación" }, "settingsTitleFull": { "message": "Ajustes y Configuración" }, "settingsTabGeneral": { "message": "General" }, "settingsTabPlex": { "message": "Plex" }, "settingsTabPhpGen": { "message": "Generador PHP" }, "settingsTabData": { "message": "Datos" }, "settingsApiServer": { "message": "Configuración de API y Servidor" }, "settingsTmdbApiLabel": { "message": "Clave de API de TMDB (Opcional)" }, "settingsTmdbApiPlaceholder": { "message": "Usará la clave por defecto si se deja en blanco" }, "settingsTmdbLangLabel": { "message": "Idioma para TMDB y UI" }, "settingsPhpUrlLabel": { "message": "URL del Servidor para Añadir Streams" }, "settingsPhpUrlPlaceholder": { "message": "https://tu-servidor.com/ruta/al/script.php" }, "settingsInterface": { "message": "Interfaz" }, "settingsLightTheme": { "message": "Modo Claro" }, "settingsShowHero": { "message": "Mostrar sección de bienvenida \"Hero\"" }, "settingsScanContent": { "message": "Escaneo de Contenido" }, "settingsScanDesc": { "message": "Selecciona qué escanear y pulsa el botón." }, "settingsScanMovies": { "message": "Películas" }, "settingsScanShows": { "message": "Series" }, "settingsScanArtists": { "message": "Música" }, "settingsScanPhotos": { "message": "Fotos" }, "settingsSelectAll": { "message": "Seleccionar Todo" }, "settingsStartScan": { "message": "Iniciar Escaneo" }, "settingsPlexTokens": { "message": "Tokens de Plex" }, "settingsPlexTokensDesc": { "message": "Edita la lista de tokens de Plex (formato JSON)." }, "settingsSaveTokens": { "message": "Guardar Tokens" }, "settingsPhpGenTitle": { "message": "Generador de Script PHP para el Servidor" }, "settingsPhpFileOptions": { "message": "Opciones del Archivo" }, "settingsPhpSavePathLabel": { "message": "Ruta de Guardado en Servidor" }, "settingsPhpSavePathPlaceholder": { "message": "Ej: /var/www/html/listas (en blanco para la misma carpeta)" }, "settingsPhpFilenameLabel": { "message": "Nombre del Archivo" }, "settingsPhpFileAction": { "message": "Acción sobre el Archivo" }, "settingsPhpActionAppend": { "message": "Añadir al final del archivo (acumulativo)" }, "settingsPhpActionOverwrite": { "message": "Sobrescribir el archivo (empezar de nuevo)" }, "settingsPhpSecurity": { "message": "Seguridad (Opcional)" }, "settingsPhpUseSecretKey": { "message": "Usar clave secreta (Recomendado)" }, "settingsPhpSecretKeyPlaceholder": { "message": "Introduce una clave secreta segura" }, "settingsPhpGeneratedCode": { "message": "Código Generado" }, "settingsPhpGeneratedPlaceholder": { "message": "El código PHP generado aparecerá aquí." }, "settingsGenerateScript": { "message": "Generar Script" }, "settingsCopyScript": { "message": "Copiar Script" }, "settingsDataManagement": { "message": "Gestión de la Base de Datos Local" }, "settingsImportDb": { "message": "Importar BD desde Archivo" }, "settingsExportDb": { "message": "Exportar BD a Archivo" }, "settingsClearContent": { "message": "Borrar Datos de Contenido Local" }, "settingsClearContentDesc": { "message": "Esta acción borrará películas, series y música de la base de datos local, pero no afectará a tus favoritos o ajustes." }, "settingsClose": { "message": "Cerrar" }, "settingsSave": { "message": "Guardar Ajustes" }, "musicSidenavTitle": { "message": "Plex Música" }, "musicAllServers": { "message": "Todos los Servidores" }, "musicSearchArtistPlaceholder": { "message": "Buscar artista..." }, "musicSearchDiscographyPlaceholder": { "message": "Buscar en la discografía..." }, "musicNothingPlaying": { "message": "Nada en reproducción" }, "musicSelectSong": { "message": "Selecciona una canción" }, "musicToStart": { "message": "para empezar a reproducir" }, "miniplayerDownloadSong": { "message": "Descargar canción" }, "miniplayerDownloadAlbum": { "message": "Descargar álbum M3U" }, "miniplayerVolume": { "message": "Volumen" }, "miniplayerShuffle": { "message": "Aleatorio" }, "miniplayerEqualizer": { "message": "Ecualizador" }, "miniplayerOpenList": { "message": "Abrir lista" }, "eqTitle": { "message": "Ecualizador Gráfico" }, "eqPresetsLabel": { "message": "Presets" }, "eqPresetFlat": { "message": "Plano (Flat)" }, "eqPresetRock": { "message": "Rock" }, "eqPresetPop": { "message": "Pop" }, "eqPresetJazz": { "message": "Jazz" }, "eqPresetClassical": { "message": "Clásico" }, "eqPresetBassBoost": { "message": "Refuerzo de Graves" }, "eqPreampLabel": { "message": "Pre-Amp" }, "infoModalTitle": { "message": "Información" }, "infoModalFieldTitle": { "message": "Título:" }, "infoModalFieldArtist": { "message": "Artista:" }, "infoModalFieldAlbum": { "message": "Álbum:" }, "infoModalFieldSong": { "message": "Canción:" }, "infoModalFieldYear": { "message": "Año:" }, "infoModalFieldGenre": { "message": "Género:" }, "lang_en": { "message": "Inglés" }, "lang_es": { "message": "Español" }, "lang_fr": { "message": "Francés" }, "lang_de": { "message": "Alemán" }, "essentialFeaturesNotSupported": { "message": "Tu navegador no soporta funciones esenciales." }, "dbAccessError": { "message": "Error al acceder a la base de datos local." }, "dbUpdateNeeded": { "message": "La base de datos necesita actualizarse, por favor recarga la página." }, "dbBlocked": { "message": "Por favor, cierra otras pestañas de esta aplicación para continuar." }, "deletingContentData": { "message": "Borrando datos de contenido locales..." }, "noContentDataToDelete": { "message": "No hay datos de contenido que borrar." }, "contentDataDeleted": { "message": "Datos de contenido borrados de IndexedDB." }, "errorDeletingData": { "message": "Error al borrar datos: $message$", "placeholders": { "message": { "content": "$1" } } }, "aceEditorNotAvailable": { "message": "Editor de texto no disponible." }, "errorLoadingTokens": { "message": "Error al cargar tokens para editar." }, "errorLoadingTokensMessage": { "message": "Error al cargar tokens: $message$", "placeholders": { "message": { "content": "$1" } } }, "aceEditorNotAvailableToSave": { "message": "Editor no disponible para guardar." }, "invalidJsonFormat": { "message": "Formato JSON inválido. Debe ser { \"tokens\": [...] }" }, "tokensSaved": { "message": "Tokens guardados correctamente." }, "errorSavingTokens": { "message": "Error al guardar tokens: $message$", "placeholders": { "message": { "content": "$1" } } }, "dbNotAvailable": { "message": "IndexedDB no está disponible." }, "dbExported": { "message": "Base de datos exportada con éxito." }, "errorExportingDb": { "message": "Error al exportar la base de datos: $message$", "placeholders": { "message": { "content": "$1" } } }, "invalidJsonFile": { "message": "El archivo no contiene un objeto JSON válido." }, "noDataToImport": { "message": "El archivo no contiene datos para las secciones de la BD actual." }, "dbImported": { "message": "Base de datos importada correctamente." }, "errorImportingDb": { "message": "Error al importar la base de datos: $message$", "placeholders": { "message": { "content": "$1" } } }, "updatingView": { "message": "Actualizando la vista con los nuevos datos..." }, "confirmClearContent": { "message": "¿Estás seguro de que deseas borrar los datos de contenido locales (Películas, Series, Música, etc.)? Los Favoritos y Ajustes NO se borrarán." }, "trailerNotFound": { "message": "No se encontró tráiler para este título." }, "confirmClearHistory": { "message": "¿Estás seguro de que deseas borrar todo tu historial de visualización? Esta acción no se puede deshacer." }, "historyCleared": { "message": "Historial de visualización borrado." }, "historyItemDeleted": { "message": "Elemento borrado del historial." }, "errorGeneratingScript": { "message": "Primero genera un script para poder copiarlo." }, "scriptCopied": { "message": "Script PHP copiado al portapapeles." }, "errorCopyingScript": { "message": "Error al copiar el script." }, "scriptGenerated": { "message": "Script PHP generado." }, "errorLoadingAlbum": { "message": "Error al cargar álbum: $message$", "placeholders": { "message": { "content": "$1" } } }, "noPhotoServerSelected": { "message": "Error: No se ha seleccionado un servidor de fotos." }, "loadingGenres": { "message": "Cargando géneros..." }, "errorLoadingGenres": { "message": "Error al cargar" }, "noContentFound": { "message": "No se encontraron resultados." }, "couldNotLoadContent": { "message": "No se pudo cargar el contenido." }, "noFavorites": { "message": "Aún no tienes favoritos." }, "errorLoadingFavorites": { "message": "Error al cargar favoritos." }, "historyEmpty": { "message": "Tu historial está vacío." }, "historyEmptySub": { "message": "Explora y mira contenido para que aparezca aquí." }, "errorGeneratingRecommendations": { "message": "Error al generar recomendaciones." }, "noRecommendations": { "message": "¡Necesitamos conocerte mejor para darte recomendaciones!" }, "errorGeneratingStats": { "message": "Error al generar estadísticas." }, "noServersForToken": { "message": "No se encontraron servidores asociados para este token." }, "searchingActorContent": { "message": "Buscando contenido de $actorName$", "placeholders": { "actorName": { "content": "$1" } } }, "errorLoadingActorContent": { "message": "No se pudo cargar el contenido para $actorName$.", "placeholders": { "actorName": { "content": "$1" } } }, "errorAddingStream": { "message": "Error al añadir stream(s): $message$", "placeholders": { "message": { "content": "$1" } } }, "phpUrlNotConfigured": { "message": "La URL del servidor PHP no está configurada. Por favor, configúrala en Ajustes." }, "searchingStreams": { "message": "Buscando streams para \"$title$\"...", "placeholders": { "title": { "content": "$1" } } }, "sendingStreams": { "message": "Enviando $count$ stream(s) al servidor...", "placeholders": { "count": { "content": "$1" } } }, "streamAddedSuccess": { "message": "Stream(s) añadido(s) con éxito." }, "generatingM3U": { "message": "Generando M3U para \"$title$\"...", "placeholders": { "title": { "content": "$1" } } }, "m3uDownloaded": { "message": "M3U para \"$title$\" descargado.", "placeholders": { "title": { "content": "$1" } } }, "errorGeneratingM3U": { "message": "Error al generar M3U: $message$", "placeholders": { "message": { "content": "$1" } } }, "settingsSavedSuccess": { "message": "Ajustes guardados correctamente." }, "errorSavingSettings": { "message": "Error al guardar los ajustes en la base de datos." }, "languageChangeReload": { "message": "Idioma cambiado. La aplicación se recargará ahora." }, "addedToFavorites": { "message": "Añadido a favoritos." }, "removedFromFavorites": { "message": "Eliminado de favoritos." }, "plexScanInProgress": { "message": "El escaneo Plex ya está en curso." }, "plexScanStarting": { "message": "Iniciando escaneo Plex..." }, "noPlexTokens": { "message": "No hay tokens de Plex configurados." }, "clearingSections": { "message": "Limpiando secciones: $sections$", "placeholders": { "sections": { "content": "$1" } } }, "sectionsCleared": { "message": "Secciones limpiadas." }, "tokenFoundServers": { "message": "Token $token$... encontró $count$ servidores.", "placeholders": { "token": { "content": "$1" }, "count": { "content": "$2" } } }, "errorProcessingToken": { "message": "Error procesando token $token$...: $message$", "placeholders": { "token": { "content": "$1" }, "message": { "content": "$2" } } }, "initialScanPhaseComplete": { "message": "Fase de escaneo inicial finalizada." }, "retryPhaseFinished": { "message": "Fase de reintentos finalizada." }, "plexScanFinished": { "message": "Escaneo finalizado. Actualizando contenido..." }, "plexScanFatalError": { "message": "ERROR FATAL: $message$", "placeholders": { "message": { "content": "$1" } } }, "errorDuringScan": { "message": "Error durante el escaneo: $message$", "placeholders": { "message": { "content": "$1" } } }, "scanCancelled": { "message": "Escaneo cancelado por el usuario." }, "scanCancelledInfo": { "message": "Escaneo cancelado." }, "retyingSection": { "message": "Reintentando sección \"$title$\"...", "placeholders": { "title": { "content": "$1" } } }, "retrySuccess": { "message": "[ÉXITO] Reintento de \"$title$\" completado.", "placeholders": { "title": { "content": "$1" } } }, "retryError": { "message": "[ERROR FINAL] Falló el reintento para \"$title$\": $message$", "placeholders": { "title": { "content": "$1" }, "message": { "content": "$2" } } }, "noRetriesPending": { "message": "No hay reintentos pendientes." }, "startingRetryPhase": { "message": "Iniciando fase de reintentos para $count$ secciones...", "placeholders": { "count": { "content": "$1" } } }, "retryPhaseCancelled": { "message": "Fase de reintentos cancelada." }, "errorInitializingMusicPlayer": { "message": "Error inicializando el reproductor de música." }, "criticalErrorLoadingMusic": { "message": "Error crítico al cargar datos de música." }, "errorLoadingArtists": { "message": "Error al cargar artistas." }, "dbUnavailableError": { "message": "Error: Base de datos no disponible." }, "updatingMusicData": { "message": "Actualizando datos de música..." }, "musicDataUpdated": { "message": "Datos de música actualizados." }, "errorFetchingArtistSongs": { "message": "Error al obtener canciones del artista." }, "errorLoadingSongs": { "message": "Error cargando canciones." }, "noArtistsFound": { "message": "No se encontraron artistas." }, "artistsCounter": { "message": "$start$-$end$ de $total$", "placeholders": { "start": { "content": "$1" }, "end": { "content": "$2" }, "total": { "content": "$3" } } }, "artistsCounterSingle": { "message": "$total$ Artistas", "placeholders": { "total": { "content": "$1" } } }, "artistsCounterLoading": { "message": "Cargando..." }, "noSongsFound": { "message": "No se encontraron canciones." }, "shuffleOn": { "message": "Modo aleatorio activado." }, "shuffleOff": { "message": "Modo aleatorio desactivado." }, "downloadingSong": { "message": "Iniciando descarga de \"$title$\"...", "placeholders": { "title": { "content": "$1" } } }, "songDownloaded": { "message": "\"$title$\" descargado.", "placeholders": { "title": { "content": "$1" } } }, "errorDownloadingSong": { "message": "Error al descargar \"$title$\"", "placeholders": { "title": { "content": "$1" } } }, "generatingAlbumM3U": { "message": "Generando M3U para \"$artist$\"...", "placeholders": { "artist": { "content": "$1" } } }, "albumM3UGenerated": { "message": "M3U del álbum \"$artist$\" generado.", "placeholders": { "artist": { "content": "$1" } } }, "playbackError": { "message": "Error de reproducción" }, "errorLabel": { "message": "Error" }, "reloadingPage": { "message": "Recargando la página..." }, "viewed": { "message": "Visto" }, "local": { "message": "Local" }, "topRatedSort": {"message": "Mejor Valoradas"}, "recentSort": {"message": "Recientes"}, "popularSort": {"message": "Populares"}, "moviesSectionTitle": {"message": "Películas"}, "seriesSectionTitle": {"message": "Series"}, "searchResultsFor": {"message": "Resultados para \"$query$\"", "placeholders": {"query": {"content": "$1"}}}, "contentFrom": {"message": "Contenido de $actor$", "placeholders": {"actor": {"content": "$1"}}}, "explore": {"message": "Explorar"}, "noGenre": {"message": "Sin Género"}, "synopsis": {"message": "Sinopsis"}, "noSynopsis": {"message": "No hay sinopsis disponible."}, "director": {"message": "Director:"}, "writer": {"message": "Escritor:"}, "viewOnImdb": {"message": "Ver en IMDb"}, "watchTrailer": {"message": "Ver Tráiler"}, "addToFavorites": {"message": "Favorito"}, "removeFromFavorites": {"message": "Quitar Fav."}, "notAvailable": {"message": "No disponible"}, "mainCast": {"message": "Reparto Principal"}, "seasonsAndEpisodes": {"message": "Temporadas y Episodios"}, "similarContent": {"message": "Contenido Similar"}, "episodesCount": {"message": "$count$ Episodios", "placeholders": {"count": {"content": "$1"}}}, "seasonsCount": {"message": "$count$ Temporadas", "placeholders": {"count": {"content": "$1"}}}, "runtimeMinutes": {"message": "$count$ min", "placeholders": {"count": {"content": "$1"}}}, "noTrailerFound": {"message": "No se encontró tráiler para este título."}, "fatalInitError": {"message": "Error de Inicialización"}, "fatalInitErrorSub": {"message": "No se pudo cargar la aplicación."}, "invalidStreamInfo": {"message": "Información inválida."}, "dbUnavailableForStreams": {"message": "Base de datos local no disponible."}, "noPlexServersForStreams": {"message": "No hay servidores Plex."}, "notFoundOnServers": {"message": "No se encontró \"$query$\" en los servidores.", "placeholders": {"query": {"content": "$1"}}}, "relativeTime_justNow": { "message": "Hace un momento" }, "relativeTime_minutesAgo": { "message": "Hace $count$ minutos", "placeholders": { "count": { "content": "$1" } } }, "relativeTime_hoursAgo": { "message": "Hace $count$ horas", "placeholders": { "count": { "content": "$1" } } }, "relativeTime_yesterday": { "message": "Ayer" }, "relativeTime_daysAgo": { "message": "Hace $count$ días", "placeholders": { "count": { "content": "$1" } } }, "errorLoadingDetails": { "message": "Error al Cargar Detalles" }, "errorLoadingLocalContent": { "message": "Error al cargar contenido local." }, "errorServerResponse": { "message": "Respuesta no exitosa del servidor." }, "errorPlexApi": { "message": "Error $status$ de la API de Plex.", "placeholders": { "status": { "content": "$1" } } }, "errorParsingPlexXml": { "message": "Error al parsear XML de Plex." }, "untitled": { "message": "Sin título" }, "itemCount": { "message": "$count$ elementos", "placeholders": { "count": { "content": "$1" } } }, "noPhotoServers": { "message": "No hay servidores de fotos" } }