CinePlex/_locales/es/messages.json

441 lines
39 KiB
JSON
Raw Normal View History

2025-07-02 14:16:25 +02:00
{
"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" },
2025-07-25 23:57:03 +02:00
"navProviders": { "message": "Proveedores" },
2025-07-02 14:16:25 +02:00
"navPhotos": { "message": "Fotos" },
"navStats": { "message": "Estadísticas" },
"navFavorites": { "message": "Favoritos" },
"navHistory": { "message": "Historial" },
"navRecommendations": { "message": "Recomendaciones" },
"navMusic": { "message": "Música" },
2025-07-30 20:47:55 +02:00
"navM3uGenerator": { "message": "Generador M3U" },
2025-07-13 11:14:42 +02:00
"heroWelcome": { "message": "" },
2025-07-02 14:16:25 +02:00
"heroSubtitle": { "message": "Explora miles de películas y series." },
"addStream": { "message": "Añadir Stream" },
2025-07-07 17:26:02 +02:00
"moreInfo": { "message": "Más información" },
2025-07-02 14:16:25 +02:00
"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..." },
2025-07-26 18:53:03 +02:00
"loadingLibraries": { "message": "Cargando bibliotecas..." },
2025-07-07 17:26:02 +02:00
"photosEmptyState": { "message": "No se encontraron álbumes ni fotos." },
"photosEmptyStateSub": { "message": "Por favor, selecciona un servidor o asegúrate de tener una biblioteca de fotos en Plex." },
"statsTitle": { "message": "Estadísticas de la Biblioteca" },
2025-07-02 14:16:25 +02:00
"statsAllTokens": { "message": "Todos los Tokens" },
2025-07-07 17:26:02 +02:00
"statsAnalyzing": { "message": "Analizando tu biblioteca..." },
2025-07-02 14:16:25 +02:00
"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." },
"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" },
"settingsTabJellyfin": { "message": "Jellyfin" },
2025-07-02 14:16:25 +02:00
"settingsTabPhpGen": { "message": "Generador PHP" },
"settingsTabData": { "message": "Datos" },
"settingsApiServer": { "message": "Configuración de API y Servidor" },
"settingsTmdbApiLabel": { "message": "Clave de API de TMDB (Opcional)" },
2025-07-07 17:26:02 +02:00
"settingsTmdbApiPlaceholder": { "message": "Se usará la clave por defecto si se deja en blanco" },
2025-07-30 20:47:55 +02:00
"settingsGoogleApiLabel": { "message": "Clave de API de Google Gemini (Opcional)" },
"settingsGoogleApiPlaceholder": { "message": "Necesaria para usar el asistente de IA" },
"settingsRegionLabel": { "message": "Región para descubrimiento de contenido" },
"allRegions": { "message": "Todas las regiones" },
2025-07-02 14:16:25 +02:00
"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" },
2025-07-07 17:26:02 +02:00
"settingsShowHero": { "message": "Mostrar sección de bienvenida 'Hero'" },
2025-07-02 14:16:25 +02:00
"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" },
"settingsJellyfinTitle": { "message": "Configuración de Jellyfin" },
"settingsJellyfinDesc": { "message": "Añade los datos de tu servidor Jellyfin para escanear su contenido." },
"jellyfinUrlLabel": { "message": "URL del Servidor Jellyfin" },
"jellyfinUserLabel": { "message": "Nombre de Usuario" },
"jellyfinPassLabel": { "message": "Contraseña" },
"jellyfinConnectAndScan": { "message": "Conectar y Escanear" },
2025-07-02 14:16:25 +02:00
"settingsPhpGenTitle": { "message": "Generador de Script PHP para el Servidor" },
"settingsPhpFileOptions": { "message": "Opciones del Archivo" },
2025-07-07 17:26:02 +02:00
"settingsPhpSavePathLabel": { "message": "Ruta de Guardado en el Servidor" },
2025-07-02 14:16:25 +02:00
"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" },
2025-07-07 17:26:02 +02:00
"settingsClearContentDesc": { "message": "Esta acción borrará películas, series y música de la base de datos local, pero no afectará a tus favoritos ni a tus ajustes." },
2025-07-02 14:16:25 +02:00
"settingsClose": { "message": "Cerrar" },
"settingsSave": { "message": "Guardar Ajustes" },
2025-07-07 17:26:02 +02:00
"musicSidenavTitle": { "message": "Música de Plex" },
2025-07-02 14:16:25 +02:00
"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" },
2025-07-07 17:26:02 +02:00
"eqPresetsLabel": { "message": "Preajustes" },
"eqPresetFlat": { "message": "Plano" },
2025-07-02 14:16:25 +02:00
"eqPresetRock": { "message": "Rock" },
"eqPresetPop": { "message": "Pop" },
"eqPresetJazz": { "message": "Jazz" },
2025-07-07 17:26:02 +02:00
"eqPresetClassical": { "message": "Clásica" },
2025-07-02 14:16:25 +02:00
"eqPresetBassBoost": { "message": "Refuerzo de Graves" },
2025-07-07 17:26:02 +02:00
"eqPreampLabel": { "message": "Preamplificador" },
2025-07-02 14:16:25 +02:00
"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" },
2025-07-05 10:04:41 +02:00
"lang_it": { "message": "Italiano" },
"lang_pt": { "message": "Portugués" },
2025-07-02 14:16:25 +02:00
"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." },
2025-07-12 12:56:04 +02:00
"confirmClearHistory": { "message": "¿Estás seguro de que deseas borrar todo tu historial de visualización? Esta acción no se puede rehacer." },
2025-07-02 14:16:25 +02:00
"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." },
2025-07-07 17:26:02 +02:00
"searchingStreams": { "message": "Buscando streams para \"$title$\"", "placeholders": { "title": { "content": "$1" } } },
2025-07-02 14:16:25 +02:00
"sendingStreams": { "message": "Enviando $count$ stream(s) al servidor...", "placeholders": { "count": { "content": "$1" } } },
"streamAddedSuccess": { "message": "Stream(s) añadido(s) con éxito." },
2025-07-07 17:26:02 +02:00
"generatingM3U": { "message": "Generando M3U para \"$title$\"", "placeholders": { "title": { "content": "$1" } } },
2025-07-30 20:47:55 +02:00
"m3uDownloaded": { "message": "\"$title$\" descargado.", "placeholders": { "title": { "content": "$1" } } },
2025-07-02 14:16:25 +02:00
"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" } } },
"initialScanPhaseComplete": { "message": "Fase de escaneo inicial finalizada." },
"retryPhaseFinished": { "message": "Fase de reintentos finalizada." },
"plexScanFinished": { "message": "Escaneo finalizado. Actualizando contenido..." },
"scanCancelled": { "message": "Escaneo cancelado por el usuario." },
"scanCancelledInfo": { "message": "Escaneo cancelado." },
"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." },
2025-07-07 17:26:02 +02:00
"errorFetchingArtistSongs": { "message": "Error al obtener las canciones del artista." },
2025-07-02 14:16:25 +02:00
"errorLoadingSongs": { "message": "Error cargando canciones." },
"noArtistsFound": { "message": "No se encontraron artistas." },
"shuffleOn": { "message": "Modo aleatorio activado." },
"shuffleOff": { "message": "Modo aleatorio desactivado." },
"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"},
2025-07-07 17:26:02 +02:00
"noGenre": {"message": "Sin categoría"},
2025-07-02 14:16:25 +02:00
"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"},
2025-07-07 17:26:02 +02:00
"addToFavorites": {"message": "Añadir a favoritos"},
"removeFromFavorites": {"message": "Quitar de favoritos"},
2025-07-02 14:16:25 +02:00
"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."},
2025-07-07 17:26:02 +02:00
"fatalInitError": {"message": "Error fatal de inicialización"},
2025-07-02 14:16:25 +02:00
"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 de Plex.", "placeholders": {"query": {"content": "$1"}}},
2025-07-07 17:26:02 +02:00
"relativeTime_justNow": { "message": "Ahora mismo" },
2025-07-02 14:16:25 +02:00
"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" } } },
2025-07-07 17:26:02 +02:00
"errorLoadingDetails": { "message": "Error al Cargar los Detalles" },
"errorLoadingLocalContent": { "message": "Error al cargar el contenido local." },
2025-07-02 14:16:25 +02:00
"errorServerResponse": { "message": "Respuesta no exitosa del servidor." },
"errorPlexApi": { "message": "Error $status$ de la API de Plex.", "placeholders": { "status": { "content": "$1" } } },
2025-07-07 17:26:02 +02:00
"errorParsingPlexXml": { "message": "Error al analizar el XML de Plex." },
2025-07-02 14:16:25 +02:00
"untitled": { "message": "Sin título" },
"itemCount": { "message": "$count$ elementos", "placeholders": { "count": { "content": "$1" } } },
"noPhotoServers": { "message": "No hay servidores de fotos" },
"jellyfinScanInProgress": { "message": "El escaneo Jellyfin ya está en curso." },
"jellyfinScanning": { "message": "Escaneando Jellyfin..." },
"jellyfinMissingCredentials": { "message": "Por favor, completa la URL y el usuario de Jellyfin." },
"jellyfinConnecting": { "message": "Conectando a Jellyfin en: $url$", "placeholders": { "url": { "content": "$1" } } },
"jellyfinAuthFailed": { "message": "Autenticación Jellyfin fallida: $message$", "placeholders": { "message": { "content": "$1" } } },
"jellyfinAuthSuccess": { "message": "Autenticación Jellyfin exitosa." },
"jellyfinFetchingLibraries": { "message": "Obteniendo bibliotecas..." },
"jellyfinFetchFailed": { "message": "Error al obtener bibliotecas: $message$", "placeholders": { "message": { "content": "$1" } } },
"jellyfinNoMediaLibraries": { "message": "No se encontraron bibliotecas de películas o series en Jellyfin." },
"jellyfinLibrariesFound": { "message": "$count$ biblioteca(s) de medios encontrada(s).", "placeholders": { "count": { "content": "$1" } } },
"jellyfinLibraryScanSuccess": { "message": "[Éxito] '$libraryName$' escaneada, $count$ títulos añadidos.", "placeholders": { "libraryName": { "content": "$1" }, "count": { "content": "$2" } } },
"jellyfinLibraryScanFailed": { "message": "Error al escanear la biblioteca '$libraryName$'.", "placeholders": { "libraryName": { "content": "$1" } } },
"jellyfinScanSuccess": { "message": "Escaneo Jellyfin completado. Añadidas $movies$ películas y $series$ series.", "placeholders": { "movies": { "content": "$1" }, "series": { "content": "$2" } } },
"noJellyfinCredentials": { "message": "Credenciales de Jellyfin no configuradas." },
"notFoundOnJellyfin": { "message": "No se encontró \"$query$\" en Jellyfin.", "placeholders": { "query": { "content": "$1" } } },
"notFoundOnAnyServer": { "message": "No se encontró \"$query$\" en ningún servidor.", "placeholders": { "query": { "content": "$1" } } },
"localOnPlex": { "message": "En Plex" },
"searchOnPlex": { "message": "Buscar en Plex" },
"jellyfinTitle": { "message": "Contenido de Jellyfin" },
"noJellyfinContent": { "message": "No se encontró contenido de Jellyfin." },
2025-07-12 12:56:04 +02:00
"noJellyfinContentSub": { "message": "Asegúrate de haber escaneado tu servidor Jellyfin en los ajustes." },
"activityViewerTitle": { "message": "Visor de Actividad del Servidor" },
"activitySelectServer": { "message": "Selecciona un servidor" },
"activityCheckBtn": { "message": "Actualizar" },
"activityNoSessions": { "message": "No hay sesiones activas en este servidor." },
"activitySessionUser": { "message": "Usuario" },
"activitySessionDevice": { "message": "Dispositivo" },
"activitySessionContent": { "message": "Contenido" },
"activitySessionState": { "message": "Estado" },
"activitySessionIdentifier": { "message": "Identificador del Cliente" },
"activityCopyID": { "message": "Copiar ID" },
"activityError": { "message": "No se pudo obtener la actividad del servidor." },
"activityCopied": { "message": "¡Identificador copiado al portapapeles!" },
2025-07-25 23:57:03 +02:00
"activityCopyError": { "message": "Error al copiar el identificador." },
"noProvidersFound": { "message": "No se encontraron proveedores." },
2025-07-26 18:53:03 +02:00
"availableOnPlex": { "message": "Disponible en Plex" },
"m3uGeneratorTitle": { "message": "Generador de Listas M3U" },
"selectAServer": { "message": "Selecciona un servidor..." },
"downloadM3u": { "message": "Descargar M3U" },
"m3uGenerator": { "message": "Generador M3U" },
"selectLibraries": { "message": "Seleccionar Bibliotecas" },
"howToUse": { "message": "Cómo Usar" },
"m3uInstruction1": { "message": "Elige un servidor de la lista." },
"m3uInstruction2": { "message": "Selecciona una o más bibliotecas para incluir." },
"m3uInstruction3": { "message": "Haz clic en el botón de descarga." },
2025-07-28 13:58:30 +02:00
"m3uInstruction4": { "message": "Importa el archivo .m3u en tu reproductor compatible." },
2025-07-29 15:05:06 +02:00
"chatOpen": { "message": "Abrir Chat" },
"chatTitle": { "message": "Asistente IA" },
"chatClose": { "message": "X" },
"chatPlaceholder": { "message": "Escribe tu mensaje..." },
"chatSend": { "message": "➤" },
"chatWelcome": { "message": "¡Bienvenido! Soy tu asistente de CinePlex. Pregúntame sobre películas, series o cualquier otra cosa que quieras saber." },
2025-07-30 20:47:55 +02:00
"chatGoogleApiKeyMissing": { "message": "La clave de la API de Google Gemini no está configurada. Por favor, configúrala en los ajustes de la extensión para usar el asistente de IA." },
2025-07-29 15:05:06 +02:00
"chatApiInvalidResponse": { "message": "La API ha devuelto una respuesta no válida. Por favor, inténtalo de nuevo." },
"chatApiError": { "message": "Error al comunicarse con el asistente de IA" },
"downloadAll": { "message": "Descargar todo" },
"download": { "message": "Descargar" },
2025-07-30 20:47:55 +02:00
"aiToolSearchLibraryDesc": { "message": "Busca en la biblioteca de Plex del usuario películas o series por título." },
"aiToolSearchLibraryQueryParamDesc": { "message": "El título de la película o serie a buscar." },
"aiToolSearchLibraryTypeParamDesc": { "message": "El tipo de contenido a buscar. Puede ser 'movie' para películas o 'series' para series. (Opcional)." },
"aiToolNavigateToPageDesc": { "message": "Navega al usuario a una página específica de la interfaz de la aplicación." },
"aiToolNavigateToPagePageParamDesc": { "message": "El nombre de la página a la que navegar, por ejemplo: 'movies', 'series', 'stats', 'favorites', 'history', 'recommendations', 'photos', 'providers', o 'm3u-generator'." },
"aiToolGetUserStatsDesc": { "message": "Obtiene y muestra las estadísticas de la biblioteca del usuario, como el número total de películas, series y artistas únicos." },
"aiToolShowItemDetailsDesc": { "message": "Muestra la página de detalles de una película o serie específica por su título y tipo." },
"aiToolShowItemDetailsTitleParamDesc": { "message": "El título exacto de la película o serie." },
"aiToolShowItemDetailsTypeParamDesc": { "message": "El tipo de contenido. Debe ser 'movie' o 'series'." },
"aiToolAddToPlaylistDesc": { "message": "Añade una película o serie a la lista de reproducción actual del usuario para transmitirla a un servidor PHP configurado." },
"aiToolAddToPlaylistTitleParamDesc": { "message": "El título de la película o serie a añadir." },
"aiToolAddToPlaylistTypeParamDesc": { "message": "El tipo de contenido. Debe ser 'movie' o 'series'." },
"aiToolCheckAndDownloadDesc": { "message": "Comprueba la disponibilidad de una lista de títulos de películas o series en los servidores locales del usuario y, si se encuentran, genera y descarga un archivo de lista de reproducción M3U con los streams encontrados." },
"aiToolCheckAndDownloadTitlesParamDesc": { "message": "Una matriz de títulos de películas o series para buscar y descargar." },
"aiToolCheckAndDownloadTypeParamDesc": { "message": "El tipo de contenido de la lista. Debe ser 'movie' o 'series'." },
"aiToolCheckAndDownloadFilenameParamDesc": { "message": "El nombre del archivo M3U a descargar (por ejemplo, 'MiLista.m3u'). Si no se proporciona, se usará un nombre por defecto." },
"aiToolToggleFavoriteDesc": { "message": "Añade o quita una película o serie de la lista de favoritos del usuario." },
"aiToolToggleFavoriteTitleParamDesc": { "message": "El título de la película o serie." },
"aiToolToggleFavoriteTypeParamDesc": { "message": "El tipo de contenido. Debe ser 'movie' o 'series'." },
"aiToolGetRecommendationsDesc": { "message": "Genera y muestra una lista de recomendaciones de películas o series basadas en el historial de visualización y los favoritos del usuario." },
"aiToolApplyFiltersDesc": { "message": "Aplica filtros a la vista actual de películas o series, permitiendo refinar los resultados por tipo, género, año y orden de clasificación." },
"aiToolApplyFiltersTypeParamDesc": { "message": "El tipo de contenido al que aplicar los filtros. Debe ser 'movie' o 'series'." },
"aiToolApplyFiltersGenreParamDesc": { "message": "El nombre del género por el que filtrar (por ejemplo, 'Acción', 'Drama')." },
"aiToolApplyFiltersYearParamDesc": { "message": "El año de lanzamiento por el que filtrar (por ejemplo, '2023')." },
"aiToolApplyFiltersSortParamDesc": { "message": "El criterio de ordenación para los resultados. Valores válidos: 'popularity.desc' (populares), 'vote_average.desc' (mejor valoradas), 'release_date.desc' (recientes para películas) o 'first_air_date.desc' (recientes para series)." },
"aiToolPlayMusicByArtistDesc": { "message": "Abre el reproductor de música y comienza a reproducir canciones de un artista específico de la biblioteca del usuario." },
"aiToolPlayMusicByArtistNameParamDesc": { "message": "El nombre exacto del artista cuyas canciones se desean reproducir." },
"aiToolClearChatHistoryDesc": { "message": "Borra todo el historial de mensajes de la conversación actual con el asistente de IA." },
"aiToolDeleteDatabaseDesc": { "message": "Elimina toda la base de datos local de la extensión, incluyendo el contenido escaneado, los ajustes y los favoritos. Esta acción es irreversible y recargará la aplicación." },
"aiToolUpdateAllTokensDesc": { "message": "Inicia un escaneo completo de todos los servidores y bibliotecas de Plex asociados con los tokens configurados en la extensión. Actualiza todas las películas, series, artistas y fotos." },
"aiToolAddPlexTokenDesc": { "message": "Añade un nuevo token X-Plex a la configuración de la extensión, permitiendo que la aplicación escanee contenido de nuevos servidores Plex." },
"aiToolAddPlexTokenTokenParamDesc": { "message": "La cadena del token X-Plex que se desea añadir." },
"aiToolChangeRegionDesc": { "message": "Cambia la región utilizada para el descubrimiento de contenido en la API de TMDB. Esto afectará a los resultados mostrados en las secciones de películas y series, así como a los proveedores de streaming." },
"aiToolChangeRegionRegionParamDesc": { "message": "El código de país ISO 3166-1 de dos letras para la nueva región (por ejemplo, 'US' para Estados Unidos, 'ES' para España, 'MX' para México)." },
"aiToolClearAllFavoritesDesc": { "message": "Elimina todas las películas y series que el usuario ha marcado como favoritas." },
"aiToolClearViewingHistoryDesc": { "message": "Borra el historial de visualización del usuario de la página de historial." },
"aiToolClearRecommendationsViewDesc": { "message": "Limpia la vista de recomendaciones y elimina las recomendaciones almacenadas en caché." },
"aiToolSearchNotFound": { "message": "No se encontró '$query$' en tu biblioteca.", "placeholders": { "query": { "content": "$1" } } },
"aiToolNavigateSuccess": { "message": "Navegado a la página de $page$.", "placeholders": { "page": { "content": "$1" } } },
"aiToolNavigateError": { "message": "Error al navegar a la página de $page$.", "placeholders": { "page": { "content": "$1" } } },
"aiToolStatsError": { "message": "Error al obtener estadísticas." },
"aiToolItemNotFound": { "message": "No se encontró el elemento '$title$'.", "placeholders": { "title": { "content": "$1" } } },
"aiToolShowItemDetailsSuccess": { "message": "Mostrando detalles de '$title$'.", "placeholders": { "title": { "content": "$1" } } },
"aiToolAddToPlaylistSuccess": { "message": "Añadido '$title$' a la lista de reproducción.", "placeholders": { "title": { "content": "$1" } } },
"aiToolFavoriteAdded": { "message": "Añadido '$title$' a favoritos.", "placeholders": { "title": { "content": "$1" } } },
"aiToolFavoriteRemoved": { "message": "Eliminado '$title$' de favoritos.", "placeholders": { "title": { "content": "$1" } } },
"aiToolRecommendationsSuccess": { "message": "Mostrando recomendaciones." },
"aiToolApplyFiltersGenreNotFound": { "message": "Género '$genre$' no encontrado.", "placeholders": { "genre": { "content": "$1" } } },
"aiToolApplyFiltersSuccess": { "message": "Filtros aplicados correctamente." },
"aiToolPlayMusicNotReady": { "message": "El reproductor de música no está listo. Asegúrate de que tu biblioteca de música de Plex haya sido escaneada." },
"aiToolPlayMusicArtistNotFound": { "message": "Artista '$artist_name$' no encontrado.", "placeholders": { "artist_name": { "content": "$1" } } },
"aiToolPlayMusicNoSongs": { "message": "No se encontraron canciones para '$artist_name$'.", "placeholders": { "artist_name": { "content": "$1" } } },
"aiToolPlayMusicSuccess": { "message": "Reproduciendo música de '$artist_name$'.", "placeholders": { "artist_name": { "content": "$1" } } },
"aiToolChatHistoryCleared": { "message": "Historial de chat borrado." },
"aiToolConfirmDeleteDatabase": { "message": "¿Estás seguro de que quieres eliminar la base de datos local? Esta acción es irreversible." },
"aiToolDeleteDatabaseCancelled": { "message": "Eliminación de la base de datos cancelada." },
"aiToolExecutionError": { "message": "Error al ejecutar la herramienta '$toolName$': $message$", "placeholders": { "toolName": { "content": "$1" }, "message": { "content": "$2" } } },
"aiToolUnknown": { "message": "Herramienta desconocida: '$toolName$'.", "placeholders": { "toolName": { "content": "$1" } } },
"aiToolFavoritesCleared": { "message": "Favoritos eliminados." },
"aiToolFavoritesClearError": { "message": "Error al eliminar los favoritos: $message$", "placeholders": { "message": { "content": "$1" } } },
"aiToolRecommendationsCleared": { "message": "Recomendaciones eliminadas." },
"aiToolRecommendationsClearError": { "message": "Error al eliminar las recomendaciones: $message$", "placeholders": { "message": { "content": "$1" } } },
"aiToolDatabaseDeleted": { "message": "Base de datos eliminada. La página se recargará." },
"aiToolDatabaseDeleteError": { "message": "Error al eliminar la base de datos: $message$", "placeholders": { "message": { "content": "$1" } } },
"aiToolDatabaseDeleteBlocked": { "message": "La eliminación de la base de datos está bloqueada. Cierra otras pestañas de la aplicación." },
"aiToolUpdateAllTokensSuccess": { "message": "Todos los tokens se han actualizado correctamente." },
"aiToolUpdateAllTokensError": { "message": "Error al actualizar los tokens: $message$", "placeholders": { "message": { "content": "$1" } } },
"aiToolAddPlexTokenSuccess": { "message": "Token de Plex añadido correctamente." },
"aiToolAddPlexTokenError": { "message": "Error al añadir el token de Plex: $message$", "placeholders": { "message": { "content": "$1" } } },
"aiToolChangeRegionSuccess": { "message": "Región cambiada a $region$. El contenido se está actualizando.", "placeholders": { "region": { "content": "$1" } } },
"aiToolChangeRegionError": { "message": "Error al cambiar la región: $message$", "placeholders": { "message": { "content": "$1" } } },
2025-07-30 20:47:55 +02:00
"aiToolViewingHistoryCleared": { "message": "Historial de visualización borrado." },
"aiToolViewingHistoryClearError": { "message": "Error al borrar el historial de visualización: $message$", "placeholders": { "message": { "content": "$1" } } },
2025-07-30 11:34:30 +02:00
"aiSystemPrompt_v3": { "message": "Eres un asistente experto en cine y series llamado CinePlex. Tu función principal es ayudar a los usuarios a descubrir contenido y a interactuar con su biblioteca. Sigue estas reglas rigurosamente: 1. **NUNCA** inventes que has realizado una acción si no has usado una herramienta para ello. Por ejemplo, no digas 'he descargado X' si no has usado la herramienta de descarga. 2. Para peticiones de recomendaciones o listas (ej. 'dime 5 películas de terror'), usa tu propio conocimiento para generar la lista. Preséntala en formato numerado o con viñetas. Después de mostrar la lista, pregunta proactivamente al usuario si quiere que compruebes la disponibilidad en sus servidores locales y crees un archivo M3U. 3. **SOLO** si el usuario confirma que quiere comprobar o descargar la lista, utiliza la herramienta `check_and_download_titles_list`. No la uses sin confirmación explícita. 4. Para cualquier otra acción como navegar, obtener estadísticas o buscar un título específico, usa las herramientas apropiadas. Sé siempre conciso, amigable y eficiente." },
"aiToolM3UNoTitlesProvided": { "message": "Por favor, proporciona una lista de títulos para crear la lista de reproducción." },
"aiToolM3UCheckingTitles": { "message": "Comprobando los títulos en tus servidores locales..." },
"aiToolM3UNoLocalMatchesForDownload": { "message": "No he encontrado ninguna de las películas o series de la lista en tus servidores locales." },
2025-07-30 20:47:55 +02:00
"aiToolM3UDownloadStarted": { "message": "¡Hecho! He encontrado $1 de los $2 títulos en tus servidores y he iniciado la descarga de la lista de reproducción M3U.", "placeholders": { "1": { "content": "$1" }, "2": { "content": "$2" } } },
"backToProviders": { "message": "Volver a Proveedores" },
"artistsCounterSingle": { "message": "$total$ Artista", "placeholders": { "total": { "content": "$1" } } },
"artistsCounterLoading": { "message": "Cargando..." },
"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 para el álbum \"$artist$\" generado.", "placeholders": { "artist": { "content": "$1" } } },
"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" } } },
"startingRetryPhase": { "message": "Iniciando fase de reintentos para $count$ secciones...", "placeholders": { "count": { "content": "$1" } } },
"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" } } },
"plexScanFatalError": { "message": "ERROR FATAL: $message$", "placeholders": { "message": { "content": "$1" } } },
"errorDuringScan": { "message": "Error durante el escaneo: $message$", "placeholders": { "message": { "content": "$1" } } },
"stoppingPlexScan": { "message": "Deteniendo escaneo Plex..." },
"invalidTokenProvided": { "message": "Token inválido proporcionado." },
"tokenAlreadyExists": { "message": "El token ya existe." },
"tokenAddedSuccessfully": { "message": "Token añadido correctamente." },
"noStreamsFoundForSelection": { "message": "No se encontraron streams para la selección." },
"autoplayBlocked": { "message": "Reproducción automática bloqueada." },
"welcomeToCinePlex": { "message": "Bienvenido a CinePlex" },
"page": { "message": "Página" }
2025-07-02 14:16:25 +02:00
}