CinePlex/_locales/pt/messages.json

441 lines
39 KiB
JSON

{
"appName": { "message": "CinePlex" },
"appDescription": { "message": "Scaneia servidores Plex para encontrar conteúdo e mostra-o na interface" },
"appTagline": { "message": "Filmes, Séries e Música" },
"appLocaleCode": { "message": "pt-PT" },
"toggleNavigation": { "message": "Alternar Navegação" },
"searchPlaceholder": { "message": "Pesquisar filmes ou séries..." },
"openMusicPlayer": { "message": "Abrir Reprodutor de Música" },
"settings": { "message": "Definições" },
"navMovies": { "message": "Filmes" },
"navSeries": { "message": "Séries" },
"navProviders": { "message": "Fornecedores" },
"navPhotos": { "message": "Fotos" },
"navStats": { "message": "Estatísticas" },
"navFavorites": { "message": "Favoritos" },
"navHistory": { "message": "Histórico" },
"navRecommendations": { "message": "Recomendações" },
"navMusic": { "message": "Música" },
"navM3uGenerator": { "message": "Gerador M3U" },
"heroWelcome": { "message": "" },
"heroSubtitle": { "message": "Explore milhares de filmes e séries." },
"addStream": { "message": "Adicionar Stream" },
"moreInfo": { "message": "Mais informações" },
"popularMovies": { "message": "Filmes Populares" },
"allGenres": { "message": "Todos os géneros" },
"allYears": { "message": "Todos os anos" },
"sortPopular": { "message": "Mais populares" },
"sortTopRated": { "message": "Melhor avaliados" },
"sortRecent": { "message": "Mais recentes" },
"loadMore": { "message": "Carregar mais" },
"photosBreadcrumbHome": { "message": "Álbuns" },
"selectServer": { "message": "Selecionar um servidor" },
"loading": { "message": "A carregar..." },
"loadingLibraries": { "message": "A carregar bibliotecas..." },
"photosEmptyState": { "message": "Nenhum álbum ou foto encontrada." },
"photosEmptyStateSub": { "message": "Por favor, selecione um servidor ou certifique-se de que tem uma biblioteca de fotos no Plex." },
"statsTitle": { "message": "Estatísticas da Biblioteca" },
"statsAllTokens": { "message": "Todos os Tokens" },
"statsAnalyzing": { "message": "A analisar a sua biblioteca..." },
"statsActiveTokens": { "message": "Tokens Ativos" },
"statsServersFound": { "message": "Servidores Encontrados" },
"statsUniqueMovies": { "message": "Filmes Únicos" },
"statsUniqueSeries": { "message": "Séries Únicas" },
"statsUniqueArtists": { "message": "Artistas Únicos" },
"statsTokenServers": { "message": "Servidores do Token" },
"statsChartMoviesByGenre": { "message": "Conteúdo por Género (Filmes)" },
"statsChartSeriesByGenre": { "message": "Conteúdo por Género (Séries)" },
"statsChartByDecade": { "message": "Conteúdo por Década" },
"recommendationsTitle": { "message": "Recomendações para si" },
"historyTitle": { "message": "Histórico de Visualização" },
"clearHistory": { "message": "Limpar Tudo" },
"consoleTitle": { "message": "Consola de Leitura Plex" },
"footerCredit": { "message": "Uma interface para o seu universo Plex." },
"closeTrailer": { "message": "Fechar trailer" },
"close": { "message": "Fechar" },
"photoViewer": { "message": "Visualizador de fotos" },
"previous": { "message": "Anterior" },
"next": { "message": "Próximo" },
"notificationTemplateText": { "message": "Notificação" },
"settingsTitleFull": { "message": "Definições e Configuração" },
"settingsTabGeneral": { "message": "Geral" },
"settingsTabPlex": { "message": "Plex" },
"settingsTabJellyfin": { "message": "Jellyfin" },
"settingsTabPhpGen": { "message": "Gerador PHP" },
"settingsTabData": { "message": "Dados" },
"settingsApiServer": { "message": "Configuração de API e Servidor" },
"settingsTmdbApiLabel": { "message": "Chave de API TMDB (Opcional)" },
"settingsTmdbApiPlaceholder": { "message": "Será usada a chave padrão se deixado em branco" },
"settingsGoogleApiLabel": { "message": "Chave de API Google Gemini (Opcional)" },
"settingsGoogleApiPlaceholder": { "message": "Necessária para usar o assistente de IA" },
"settingsRegionLabel": { "message": "Região para descoberta de conteúdo" },
"allRegions": { "message": "Todas as regiões" },
"settingsPhpUrlLabel": { "message": "URL do Servidor para Adicionar Streams" },
"settingsPhpUrlPlaceholder": { "message": "https://o-seu-servidor.com/caminho/para/o-script.php" },
"settingsInterface": { "message": "Interface" },
"settingsLightTheme": { "message": "Modo Claro" },
"settingsShowHero": { "message": "Mostrar secção de boas-vindas 'Hero'" },
"settingsScanContent": { "message": "Análise de Conteúdo" },
"settingsScanDesc": { "message": "Selecione o que analisar e clique no botão." },
"settingsScanMovies": { "message": "Filmes" },
"settingsScanShows": { "message": "Séries" },
"settingsScanArtists": { "message": "Música" },
"settingsScanPhotos": { "message": "Fotos" },
"settingsSelectAll": { "message": "Selecionar Tudo" },
"settingsStartScan": { "message": "Iniciar Análise" },
"settingsPlexTokens": { "message": "Tokens Plex" },
"settingsPlexTokensDesc": { "message": "Editar a lista de tokens Plex (formato JSON)." },
"settingsSaveTokens": { "message": "Guardar Tokens" },
"settingsJellyfinTitle": { "message": "Configuração Jellyfin" },
"settingsJellyfinDesc": { "message": "Adicione os dados do seu servidor Jellyfin para analisar o seu conteúdo." },
"jellyfinUrlLabel": { "message": "URL do Servidor Jellyfin" },
"jellyfinUserLabel": { "message": "Nome de Utilizador" },
"jellyfinPassLabel": { "message": "Palavra-passe" },
"jellyfinConnectAndScan": { "message": "Ligar e Analisar" },
"settingsPhpGenTitle": { "message": "Gerador de Script PHP para o Servidor" },
"settingsPhpFileOptions": { "message": "Opções do Ficheiro" },
"settingsPhpSavePathLabel": { "message": "Caminho de Gravação no Servidor" },
"settingsPhpSavePathPlaceholder": { "message": "Ex: /var/www/html/listas (em branco para a mesma pasta)" },
"settingsPhpFilenameLabel": { "message": "Nome do Ficheiro" },
"settingsPhpFileAction": { "message": "Ação no Ficheiro" },
"settingsPhpActionAppend": { "message": "Adicionar ao fim do ficheiro (cumulativo)" },
"settingsPhpActionOverwrite": { "message": "Sobrescrever o ficheiro (começar de novo)" },
"settingsPhpSecurity": { "message": "Segurança (Opcional)" },
"settingsPhpUseSecretKey": { "message": "Usar chave secreta (Recomendado)" },
"settingsPhpSecretKeyPlaceholder": { "message": "Introduza uma chave secreta segura" },
"settingsPhpGeneratedCode": { "message": "Código Gerado" },
"settingsPhpGeneratedPlaceholder": { "message": "O código PHP gerado aparecerá aqui." },
"settingsGenerateScript": { "message": "Gerar Script" },
"settingsCopyScript": { "message": "Copiar Script" },
"settingsDataManagement": { "message": "Gestão da Base de Dados Local" },
"settingsImportDb": { "message": "Importar BD de Ficheiro" },
"settingsExportDb": { "message": "Exportar BD para Ficheiro" },
"settingsClearContent": { "message": "Limpar Dados de Conteúdo Local" },
"settingsClearContentDesc": { "message": "Esta ação apagará filmes, séries e música da base de dados local, mas não afetará os seus favoritos nem as suas definições." },
"settingsClose": { "message": "Fechar" },
"settingsSave": { "message": "Guardar Definições" },
"musicSidenavTitle": { "message": "Música do Plex" },
"musicAllServers": { "message": "Todos os Servidores" },
"musicSearchArtistPlaceholder": { "message": "Pesquisar artista..." },
"musicSearchDiscographyPlaceholder": { "message": "Pesquisar na discografia..." },
"musicNothingPlaying": { "message": "Nada a reproduzir" },
"musicSelectSong": { "message": "Selecionar uma canção" },
"musicToStart": { "message": "para começar a reproduzir" },
"miniplayerDownloadSong": { "message": "Descarregar canção" },
"miniplayerDownloadAlbum": { "message": "Descarregar álbum M3U" },
"miniplayerVolume": { "message": "Volume" },
"miniplayerShuffle": { "message": "Aleatório" },
"miniplayerEqualizer": { "message": "Equalizador" },
"miniplayerOpenList": { "message": "Abrir lista" },
"eqTitle": { "message": "Equalizador Gráfico" },
"eqPresetsLabel": { "message": "Predefinições" },
"eqPresetFlat": { "message": "Plano" },
"eqPresetRock": { "message": "Rock" },
"eqPresetPop": { "message": "Pop" },
"eqPresetJazz": { "message": "Jazz" },
"eqPresetClassical": { "message": "Clássica" },
"eqPresetBassBoost": { "message": "Reforço de Graves" },
"eqPreampLabel": { "message": "Pré-amplificador" },
"infoModalTitle": { "message": "Informações" },
"infoModalFieldTitle": { "message": "Título:" },
"infoModalFieldArtist": { "message": "Artista:" },
"infoModalFieldAlbum": { "message": "Álbum:" },
"infoModalFieldSong": { "message": "Canção:" },
"infoModalFieldYear": { "message": "Ano:" },
"infoModalFieldGenre": { "message": "Género:" },
"lang_en": { "message": "Inglês" },
"lang_es": { "message": "Espanhol" },
"lang_fr": { "message": "Francês" },
"lang_de": { "message": "Alemão" },
"lang_it": { "message": "Italiano" },
"lang_pt": { "message": "Português" },
"essentialFeaturesNotSupported": { "message": "O seu navegador não suporta funções essenciais." },
"dbAccessError": { "message": "Erro ao aceder à base de dados local." },
"dbUpdateNeeded": { "message": "A base de dados precisa de ser atualizada, por favor, recarregue a página." },
"dbBlocked": { "message": "Por favor, feche outros separadores desta aplicação para continuar." },
"deletingContentData": { "message": "A apagar dados de conteúdo locais..." },
"noContentDataToDelete": { "message": "Não há dados de conteúdo para apagar." },
"contentDataDeleted": { "message": "Dados de conteúdo apagados do IndexedDB." },
"errorDeletingData": { "message": "Erro ao apagar dados: $message$", "placeholders": { "message": { "content": "$1" } } },
"aceEditorNotAvailable": { "message": "Editor de texto não disponível." },
"errorLoadingTokens": { "message": "Erro ao carregar tokens para edição." },
"errorLoadingTokensMessage": { "message": "Erro ao carregar tokens: $message$", "placeholders": { "message": { "content": "$1" } } },
"aceEditorNotAvailableToSave": { "message": "Editor não disponível para guardar." },
"invalidJsonFormat": { "message": "Formato JSON inválido. Deve ser { \"tokens\": [...] }" },
"tokensSaved": { "message": "Tokens guardados com sucesso." },
"errorSavingTokens": { "message": "Erro ao guardar tokens: $message$", "placeholders": { "message": { "content": "$1" } } },
"dbNotAvailable": { "message": "IndexedDB não está disponível." },
"dbExported": { "message": "Base de dados exportada com sucesso." },
"errorExportingDb": { "message": "Erro ao exportar a base de dados: $message$", "placeholders": { "message": { "content": "$1" } } },
"invalidJsonFile": { "message": "O ficheiro não contém um objeto JSON válido." },
"noDataToImport": { "message": "O ficheiro não contém dados para as secções da BD atual." },
"dbImported": { "message": "Base de dados importada com sucesso." },
"errorImportingDb": { "message": "Erro ao importar a base de dados: $message$", "placeholders": { "message": { "content": "$1" } } },
"updatingView": { "message": "A atualizar a vista com os novos dados..." },
"confirmClearContent": { "message": "Tem a certeza de que pretende apagar os dados de conteúdo locais (Filmes, Séries, Música, etc.)? Favoritos e Definições NÃO serão apagados." },
"trailerNotFound": { "message": "Não foi encontrado trailer para este título." },
"confirmClearHistory": { "message": "Tem a certeza de que pretende apagar todo o seu histórico de visualização? Esta ação não pode ser desfeita." },
"historyCleared": { "message": "Histórico de visualização apagado." },
"historyItemDeleted": { "message": "Item apagado do histórico." },
"errorGeneratingScript": { "message": "Primeiro, gere um script para poder copiá-lo." },
"scriptCopied": { "message": "Script PHP copiado para a área de transferência." },
"errorCopyingScript": { "message": "Erro ao copiar o script." },
"scriptGenerated": { "message": "Script PHP gerado." },
"errorLoadingAlbum": { "message": "Erro ao carregar álbum: $message$", "placeholders": { "message": { "content": "$1" } } },
"noPhotoServerSelected": { "message": "Erro: Nenhum servidor de fotos foi selecionado." },
"loadingGenres": { "message": "A carregar géneros..." },
"errorLoadingGenres": { "message": "Erro ao carregar" },
"noContentFound": { "message": "Não foram encontrados resultados." },
"couldNotLoadContent": { "message": "Não foi possível carregar o conteúdo." },
"noFavorites": { "message": "Ainda não tem favoritos." },
"errorLoadingFavorites": { "message": "Erro ao carregar favoritos." },
"historyEmpty": { "message": "O seu histórico está vazio." },
"historyEmptySub": { "message": "Explore e veja conteúdo para que apareça aqui." },
"errorGeneratingRecommendations": { "message": "Erro ao gerar recomendações." },
"noRecommendations": { "message": "Precisamos de o conhecer melhor para lhe dar recomendações!" },
"errorGeneratingStats": { "message": "Erro ao gerar estatísticas." },
"noServersForToken": { "message": "Não foram encontrados servidores associados para este token." },
"searchingActorContent": { "message": "A procurar conteúdo de $actorName$", "placeholders": { "actorName": { "content": "$1" } } },
"errorLoadingActorContent": { "message": "Não foi possível carregar o conteúdo para $actorName$.", "placeholders": { "actorName": { "content": "$1" } } },
"errorAddingStream": { "message": "Erro ao adicionar stream(s): $message$", "placeholders": { "message": { "content": "$1" } } },
"phpUrlNotConfigured": { "message": "O URL do servidor PHP não está configurado. Por favor, configure-o em Definições." },
"searchingStreams": { "message": "A procurar streams para \"$title$\"", "placeholders": { "title": { "content": "$1" } } },
"sendingStreams": { "message": "A enviar $count$ stream(s) para o servidor...", "placeholders": { "count": { "content": "$1" } } },
"streamAddedSuccess": { "message": "Stream(s) adicionado(s) com sucesso." },
"generatingM3U": { "message": "A gerar M3U para \"$title$\"", "placeholders": { "title": { "content": "$1" } } },
"m3uDownloaded": { "message": "\"$title$\" descarregado.", "placeholders": { "title": { "content": "$1" } } },
"errorGeneratingM3U": { "message": "Erro ao gerar M3U: $message$", "placeholders": { "message": { "content": "$1" } } },
"settingsSavedSuccess": { "message": "Definições guardadas com sucesso." },
"errorSavingSettings": { "message": "Erro ao guardar as definições na base de dados." },
"languageChangeReload": { "message": "Idioma alterado. A aplicação será recarregada agora." },
"addedToFavorites": { "message": "Adicionado aos favoritos." },
"removedFromFavorites": { "message": "Removido dos favoritos." },
"plexScanInProgress": { "message": "A análise do Plex já está em curso." },
"plexScanStarting": { "message": "A iniciar análise do Plex..." },
"noPlexTokens": { "message": "Não há tokens Plex configurados." },
"clearingSections": { "message": "A limpar secções: $sections$", "placeholders": { "sections": { "content": "$1" } } },
"initialScanPhaseComplete": { "message": "Fase inicial de análise concluída." },
"retryPhaseFinished": { "message": "Fase de retentativas concluída." },
"plexScanFinished": { "message": "Análise concluída. A atualizar conteúdo..." },
"scanCancelled": { "message": "Análise cancelada pelo utilizador." },
"scanCancelledInfo": { "message": "Análise cancelada." },
"errorInitializingMusicPlayer": { "message": "Erro ao iniciar o reprodutor de música." },
"criticalErrorLoadingMusic": { "message": "Erro crítico ao carregar dados de música." },
"errorLoadingArtists": { "message": "Erro ao carregar artistas." },
"dbUnavailableError": { "message": "Erro: Base de dados não disponível." },
"updatingMusicData": { "message": "A atualizar dados de música..." },
"musicDataUpdated": { "message": "Dados de música atualizados." },
"errorFetchingArtistSongs": { "message": "Erro ao obter as canções do artista." },
"errorLoadingSongs": { "message": "Erro ao carregar canções." },
"noArtistsFound": { "message": "Não foram encontrados artistas." },
"shuffleOn": { "message": "Modo aleatório ativado." },
"shuffleOff": { "message": "Modo aleatório desativado." },
"playbackError": { "message": "Erro de reprodução" },
"errorLabel": { "message": "Erro" },
"reloadingPage": { "message": "A recarregar a página..." },
"viewed": { "message": "Visto" },
"local": { "message": "Local" },
"topRatedSort": {"message": "Melhor Avaliados"},
"recentSort": {"message": "Recentes"},
"popularSort": {"message": "Populares"},
"moviesSectionTitle": {"message": "Filmes"},
"seriesSectionTitle": {"message": "Séries"},
"searchResultsFor": {"message": "Resultados para \"$query$\"", "placeholders": {"query": {"content": "$1"}}},
"contentFrom": {"message": "Conteúdo de $actor$", "placeholders": {"actor": {"content": "$1"}}},
"explore": {"message": "Explorar"},
"noGenre": {"message": "Sem categoria"},
"synopsis": {"message": "Sinopse"},
"noSynopsis": {"message": "Não há sinopse disponível."},
"director": {"message": "Realizador:"},
"writer": {"message": "Argumentista:"},
"viewOnImdb": {"message": "Ver no IMDb"},
"watchTrailer": {"message": "Ver Trailer"},
"addToFavorites": {"message": "Adicionar aos favoritos"},
"removeFromFavorites": {"message": "Remover dos favoritos"},
"notAvailable": {"message": "Não disponível"},
"mainCast": {"message": "Elenco Principal"},
"seasonsAndEpisodes": {"message": "Temporadas e Episódios"},
"similarContent": {"message": "Conteúdo Semelhante"},
"episodesCount": {"message": "$count$ Episódios", "placeholders": {"count": {"content": "$1"}}},
"seasonsCount": {"message": "$count$ Temporadas", "placeholders": {"count": {"content": "$1"}}},
"runtimeMinutes": {"message": "$count$ min", "placeholders": {"count": {"content": "$1"}}},
"noTrailerFound": {"message": "Não foi encontrado trailer para este título."},
"fatalInitError": {"message": "Erro fatal de inicialização"},
"fatalInitErrorSub": {"message": "Não foi possível carregar a aplicação."},
"invalidStreamInfo": {"message": "Informação inválida."},
"dbUnavailableForStreams": {"message": "Base de dados local não disponível."},
"noPlexServersForStreams": {"message": "Não há servidores Plex."},
"notFoundOnServers": {"message": "Não foi encontrado \"$query$\" nos servidores Plex.", "placeholders": {"query": {"content": "$1"}}},
"relativeTime_justNow": { "message": "Agora mesmo" },
"relativeTime_minutesAgo": { "message": "Há $count$ minutos", "placeholders": { "count": { "content": "$1" } } },
"relativeTime_hoursAgo": { "message": "Há $count$ horas", "placeholders": { "count": { "content": "$1" } } },
"relativeTime_yesterday": { "message": "Ontem" },
"relativeTime_daysAgo": { "message": "Há $count$ dias", "placeholders": { "count": { "content": "$1" } } },
"errorLoadingDetails": { "message": "Erro ao Carregar Detalhes" },
"errorLoadingLocalContent": { "message": "Erro ao carregar o conteúdo local." },
"errorServerResponse": { "message": "Resposta não bem-sucedida do servidor." },
"errorPlexApi": { "message": "Erro $status$ da API Plex.", "placeholders": { "status": { "content": "$1" } } },
"errorParsingPlexXml": { "message": "Erro ao analisar o XML Plex." },
"untitled": { "message": "Sem título" },
"itemCount": { "message": "$count$ elementos", "placeholders": { "count": { "content": "$1" } } },
"noPhotoServers": { "message": "Não há servidores de fotos" },
"jellyfinScanInProgress": { "message": "A análise do Jellyfin já está em curso." },
"jellyfinScanning": { "message": "A analisar Jellyfin..." },
"jellyfinMissingCredentials": { "message": "Por favor, preencha o URL e o utilizador do Jellyfin." },
"jellyfinConnecting": { "message": "A ligar ao Jellyfin em: $url$", "placeholders": { "url": { "content": "$1" } } },
"jellyfinAuthFailed": { "message": "Autenticação Jellyfin falhada: $message$", "placeholders": { "message": { "content": "$1" } } },
"jellyfinAuthSuccess": { "message": "Autenticação Jellyfin bem-sucedida." },
"jellyfinFetchingLibraries": { "message": "A obter bibliotecas..." },
"jellyfinFetchFailed": { "message": "Erro ao obter bibliotecas: $message$", "placeholders": { "message": { "content": "$1" } } },
"jellyfinNoMediaLibraries": { "message": "Não foram encontradas bibliotecas de filmes ou séries no Jellyfin." },
"jellyfinLibrariesFound": { "message": "$count$ biblioteca(s) de multimédia encontrada(s).", "placeholders": { "count": { "content": "$1" } } },
"jellyfinLibraryScanSuccess": { "message": "[Sucesso] '$libraryName$' analisada, $count$ títulos adicionados.", "placeholders": { "libraryName": { "content": "$1" }, "count": { "content": "$2" } } },
"jellyfinLibraryScanFailed": { "message": "Erro ao analisar a biblioteca '$libraryName$'.", "placeholders": { "libraryName": { "content": "$1" } } },
"jellyfinScanSuccess": { "message": "Análise Jellyfin concluída. Adicionados $movies$ filmes e $series$ séries.", "placeholders": { "movies": { "content": "$1" }, "series": { "content": "$2" } } },
"noJellyfinCredentials": { "message": "Credenciais Jellyfin não configuradas." },
"notFoundOnJellyfin": { "message": "Não foi encontrado \"$query$\" no Jellyfin.", "placeholders": { "query": { "content": "$1" } } },
"notFoundOnAnyServer": { "message": "Não foi encontrado \"$query$\" em nenhum servidor.", "placeholders": { "query": { "content": "$1" } } },
"localOnPlex": { "message": "No Plex" },
"searchOnPlex": { "message": "Pesquisar no Plex" },
"jellyfinTitle": { "message": "Conteúdo do Jellyfin" },
"noJellyfinContent": { "message": "Não foi encontrado conteúdo do Jellyfin." },
"noJellyfinContentSub": { "message": "Certifique-se de que analisou o seu servidor Jellyfin nas definições." },
"activityViewerTitle": { "message": "Visualizador de Atividade do Servidor" },
"activitySelectServer": { "message": "Selecionar um servidor" },
"activityCheckBtn": { "message": "Atualizar" },
"activityNoSessions": { "message": "Não há sessões ativas neste servidor." },
"activitySessionUser": { "message": "Utilizador" },
"activitySessionDevice": { "message": "Dispositivo" },
"activitySessionContent": { "message": "Conteúdo" },
"activitySessionState": { "message": "Estado" },
"activitySessionIdentifier": { "message": "Identificador do Cliente" },
"activityCopyID": { "message": "Copiar ID" },
"activityError": { "message": "Não foi possível obter a atividade do servidor." },
"activityCopied": { "message": "Identificador copiado para a área de transferência!" },
"activityCopyError": { "message": "Erro ao copiar o identificador." },
"noProvidersFound": { "message": "Não foram encontrados fornecedores." },
"availableOnPlex": { "message": "Disponível no Plex" },
"m3uGeneratorTitle": { "message": "Gerador de Listas M3U" },
"selectAServer": { "message": "Selecionar um servidor..." },
"downloadM3u": { "message": "Descarregar M3U" },
"m3uGenerator": { "message": "Gerador M3U" },
"selectLibraries": { "message": "Selecionar Bibliotecas" },
"howToUse": { "message": "Como Usar" },
"m3uInstruction1": { "message": "Escolha um servidor da lista." },
"m3uInstruction2": { "message": "Selecione uma ou mais bibliotecas para incluir." },
"m3uInstruction3": { "message": "Clique no botão de descarregar." },
"m3uInstruction4": { "message": "Importe o ficheiro .m3u para o seu reprodutor compatível." },
"chatOpen": { "message": "Abrir Chat" },
"chatTitle": { "message": "Assistente IA" },
"chatClose": { "message": "X" },
"chatPlaceholder": { "message": "Escreva a sua mensagem..." },
"chatSend": { "message": "➤" },
"chatWelcome": { "message": "Bem-vindo! Sou o seu assistente CinePlex. Pergunte-me sobre filmes, séries ou qualquer outra coisa que queira saber." },
"chatGoogleApiKeyMissing": { "message": "A chave da API Google Gemini não está configurada. Por favor, configure-a nas definições da extensão para usar o assistente de IA." },
"chatApiInvalidResponse": { "message": "A API devolveu uma resposta inválida. Por favor, tente novamente." },
"chatApiError": { "message": "Erro ao comunicar com o assistente de IA" },
"downloadAll": { "message": "Descarregar tudo" },
"download": { "message": "Descarregar" },
"aiToolSearchLibraryDesc": { "message": "Pesquisa na biblioteca Plex do utilizador filmes ou séries por título." },
"aiToolSearchLibraryQueryParamDesc": { "message": "O título do filme ou série a pesquisar." },
"aiToolSearchLibraryTypeParamDesc": { "message": "O tipo de conteúdo a pesquisar. Pode ser 'movie' para filmes ou 'series' para séries. (Opcional)." },
"aiToolNavigateToPageDesc": { "message": "Navega o utilizador para uma página específica da interface da aplicação." },
"aiToolNavigateToPagePageParamDesc": { "message": "O nome da página para a qual navegar, por exemplo: 'movies', 'series', 'stats', 'favorites', 'history', 'recommendations', 'photos', 'providers', ou 'm3u-generator'." },
"aiToolGetUserStatsDesc": { "message": "Obtém e mostra as estatísticas da biblioteca do utilizador, como o número total de filmes, séries e artistas únicos." },
"aiToolShowItemDetailsDesc": { "message": "Mostra a página de detalhes de um filme ou série específica pelo seu título e tipo." },
"aiToolShowItemDetailsTitleParamDesc": { "message": "O título exato do filme ou série." },
"aiToolShowItemDetailsTypeParamDesc": { "message": "O tipo de conteúdo. Deve ser 'movie' ou 'series'." },
"aiToolAddToPlaylistDesc": { "message": "Adiciona um filme ou série à lista de reprodução atual do utilizador para transmitir para um servidor PHP configurado." },
"aiToolAddToPlaylistTitleParamDesc": { "message": "O título do filme ou série a adicionar." },
"aiToolAddToPlaylistTypeParamDesc": { "message": "O tipo de conteúdo. Deve ser 'movie' ou 'series'." },
"aiToolCheckAndDownloadDesc": { "message": "Verifica a disponibilidade de uma lista de títulos de filmes ou séries nos servidores locais do utilizador e, se encontrados, gera e descarrega um ficheiro de lista de reprodução M3U com os streams encontrados." },
"aiToolCheckAndDownloadTitlesParamDesc": { "message": "Uma matriz de títulos de filmes ou séries para pesquisar e descarregar." },
"aiToolCheckAndDownloadTypeParamDesc": { "message": "O tipo de conteúdo da lista. Deve ser 'movie' ou 'series'." },
"aiToolCheckAndDownloadFilenameParamDesc": { "message": "O nome do ficheiro M3U a descarregar (por exemplo, 'MinhaLista.m3u'). Se não for fornecido, será usado um nome por defeito." },
"aiToolToggleFavoriteDesc": { "message": "Adiciona ou remove um filme ou série da lista de favoritos do utilizador." },
"aiToolToggleFavoriteTitleParamDesc": { "message": "O título do filme ou série." },
"aiToolToggleFavoriteTypeParamDesc": { "message": "O tipo de conteúdo. Deve ser 'movie' ou 'series'." },
"aiToolGetRecommendationsDesc": { "message": "Gera e mostra uma lista de recomendações de filmes ou séries baseadas no histórico de visualização e nos favoritos do utilizador." },
"aiToolApplyFiltersDesc": { "message": "Aplica filtros à vista atual de filmes ou séries, permitindo refinar os resultados por tipo, género, ano e ordem de classificação." },
"aiToolApplyFiltersTypeParamDesc": { "message": "O tipo de conteúdo ao qual aplicar os filtros. Deve ser 'movie' ou 'series'." },
"aiToolApplyFiltersGenreParamDesc": { "message": "O nome do género pelo qual filtrar (por exemplo, 'Ação', 'Drama')." },
"aiToolApplyFiltersYearParamDesc": { "message": "O ano de lançamento pelo qual filtrar (por exemplo, '2023')." },
"aiToolApplyFiltersSortParamDesc": { "message": "O critério de ordenação para os resultados. Valores válidos: 'popularity.desc' (populares), 'vote_average.desc' (melhor avaliados), 'release_date.desc' (recentes para filmes) ou 'first_air_date.desc' (recentes para séries)." },
"aiToolPlayMusicByArtistDesc": { "message": "Abre o reprodutor de música e começa a reproduzir canções de um artista específico da biblioteca do utilizador." },
"aiToolPlayMusicByArtistNameParamDesc": { "message": "O nome exato do artista cujas canções se deseja reproduzir." },
"aiToolClearChatHistoryDesc": { "message": "Limpa todo o histórico de mensagens da conversa atual com o assistente de IA." },
"aiToolDeleteDatabaseDesc": { "message": "Elimina toda a base de dados local da extensão, incluindo o conteúdo analisado, as definições e os favoritos. Esta ação é irreversível e recarregará a aplicação." },
"aiToolUpdateAllTokensDesc": { "message": "Inicia uma análise completa de todos os servidores e bibliotecas Plex associados aos tokens configurados na extensão. Atualiza todos os filmes, séries, artistas e fotos." },
"aiToolAddPlexTokenDesc": { "message": "Adiciona um novo token X-Plex à configuração da extensão, permitindo que a aplicação analise conteúdo de novos servidores Plex." },
"aiToolAddPlexTokenTokenParamDesc": { "message": "A string do token X-Plex que se deseja adicionar." },
"aiToolChangeRegionDesc": { "message": "Altera a região utilizada para a descoberta de conteúdo na API do TMDB. Isto afetará os resultados mostrados nas secções de filmes e séries, bem como os fornecedores de streaming." },
"aiToolChangeRegionRegionParamDesc": { "message": "O código de país ISO 3166-1 de duas letras para a nova região (por exemplo, 'US' para Estados Unidos, 'PT' para Portugal, 'MX' para México)." },
"aiToolClearAllFavoritesDesc": { "message": "Elimina todos os filmes e séries que o utilizador marcou como favoritos." },
"aiToolClearViewingHistoryDesc": { "message": "Apaga o histórico de visualização do utilizador da página de histórico." },
"aiToolClearRecommendationsViewDesc": { "message": "Limpa a vista de recomendações e elimina as recomendações em cache." },
"aiToolSearchNotFound": { "message": "Não foi encontrado '$query$' na sua biblioteca.", "placeholders": { "query": { "content": "$1" } } },
"aiToolNavigateSuccess": { "message": "Navegado para a página de $page$.", "placeholders": { "page": { "content": "$1" } } },
"aiToolNavigateError": { "message": "Erro ao navegar para a página de $page$.", "placeholders": { "page": { "content": "$1" } } },
"aiToolStatsError": { "message": "Erro ao obter estatísticas." },
"aiToolItemNotFound": { "message": "Não foi encontrado o item '$title$'.", "placeholders": { "title": { "content": "$1" } } },
"aiToolShowItemDetailsSuccess": { "message": "A mostrar detalhes de '$title$'.", "placeholders": { "title": { "content": "$1" } } },
"aiToolAddToPlaylistSuccess": { "message": "Adicionado '$title$' à lista de reprodução.", "placeholders": { "title": { "content": "$1" } } },
"aiToolFavoriteAdded": { "message": "Adicionado '$title$' aos favoritos.", "placeholders": { "title": { "content": "$1" } } },
"aiToolFavoriteRemoved": { "message": "Removido '$title$' dos favoritos.", "placeholders": { "title": { "content": "$1" } } },
"aiToolRecommendationsSuccess": { "message": "A mostrar recomendações." },
"aiToolApplyFiltersGenreNotFound": { "message": "Género '$genre$' não encontrado.", "placeholders": { "genre": { "content": "$1" } } },
"aiToolApplyFiltersSuccess": { "message": "Filtros aplicados com sucesso." },
"aiToolPlayMusicNotReady": { "message": "O reprodutor de música não está pronto. Certifique-se de que a sua biblioteca de música Plex foi analisada." },
"aiToolPlayMusicArtistNotFound": { "message": "Artista '$artist_name$' não encontrado.", "placeholders": { "artist_name": { "content": "$1" } } },
"aiToolPlayMusicNoSongs": { "message": "Não foram encontradas canções para '$artist_name$'.", "placeholders": { "artist_name": { "content": "$1" } } },
"aiToolPlayMusicSuccess": { "message": "A reproduzir música de '$artist_name$'.", "placeholders": { "artist_name": { "content": "$1" } } },
"aiToolChatHistoryCleared": { "message": "Histórico do chat limpo." },
"aiToolConfirmDeleteDatabase": { "message": "Tem a certeza de que pretende eliminar a base de dados local? Esta ação é irreversível." },
"aiToolDeleteDatabaseCancelled": { "message": "Eliminação da base de dados cancelada." },
"aiToolExecutionError": { "message": "Erro ao executar a ferramenta '$toolName$': $message$", "placeholders": { "toolName": { "content": "$1" }, "message": { "content": "$2" } } },
"aiToolUnknown": { "message": "Ferramenta desconhecida: '$toolName$'.", "placeholders": { "toolName": { "content": "$1" } } },
"aiToolFavoritesCleared": { "message": "Favoritos eliminados." },
"aiToolFavoritesClearError": { "message": "Erro ao eliminar os favoritos: $message$", "placeholders": { "message": { "content": "$1" } } },
"aiToolRecommendationsCleared": { "message": "Recomendações eliminadas." },
"aiToolRecommendationsClearError": { "message": "Erro ao eliminar as recomendações: $message$", "placeholders": { "message": { "content": "$1" } } },
"aiToolDatabaseDeleted": { "message": "Base de dados eliminada. A página será recarregada." },
"aiToolDatabaseDeleteError": { "message": "Erro ao eliminar a base de dados: $message$", "placeholders": { "message": { "content": "$1" } } },
"aiToolDatabaseDeleteBlocked": { "message": "A eliminação da base de dados está bloqueada. Feche outros separadores da aplicação." },
"aiToolUpdateAllTokensSuccess": { "message": "Todos os tokens foram atualizados com sucesso." },
"aiToolUpdateAllTokensError": { "message": "Erro ao atualizar os tokens: $message$", "placeholders": { "message": { "content": "$1" } } },
"aiToolAddPlexTokenSuccess": { "message": "Token Plex adicionado com sucesso." },
"aiToolAddPlexTokenError": { "message": "Erro ao adicionar o token Plex: $message$", "placeholders": { "message": { "content": "$1" } } },
"aiToolChangeRegionSuccess": { "message": "Região alterada para $region$. O conteúdo está a ser atualizado.", "placeholders": { "region": { "content": "$1" } } },
"aiToolChangeRegionError": { "message": "Erro ao alterar a região: $message$", "placeholders": { "message": { "content": "$1" } } },
"aiToolViewingHistoryCleared": { "message": "Histórico de visualização apagado." },
"aiToolViewingHistoryClearError": { "message": "Erro ao apagar o histórico de visualização: $message$", "placeholders": { "message": { "content": "$1" } } },
"aiSystemPrompt_v3": { "message": "Você é um assistente especialista em filmes e séries chamado CinePlex. A sua função principal é ajudar os utilizadores a descobrir conteúdo e a interagir com a sua biblioteca. Siga estas regras rigorosamente: 1. **NUNCA** invente que realizou uma ação se não usou uma ferramenta para tal. Por exemplo, não diga 'descarreguei X' se não usou a ferramenta de descarregar. 2. Para pedidos de recomendações ou listas (ex. 'diga-me 5 filmes de terror'), use o seu próprio conhecimento para gerar a lista. Apresente-a em formato numerado ou com marcadores. Depois de mostrar a lista, pergunte proativamente ao utilizador se ele quer que verifique a disponibilidade nos seus servidores locais e crie um ficheiro M3U. 3. **APENAS** se o utilizador confirmar que quer verificar ou descarregar a lista, utilize a ferramenta `check_and_download_titles_list`. Não a utilize sem confirmação explícita. 4. Para qualquer outra ação como navegar, obter estatísticas ou procurar um título específico, utilize as ferramentas apropriadas. Seja sempre conciso, amigável e eficiente." },
"aiToolM3UNoTitlesProvided": { "message": "Por favor, forneça uma lista de títulos para criar a lista de reprodução." },
"aiToolM3UCheckingTitles": { "message": "A verificar os títulos nos seus servidores locais..." },
"aiToolM3UNoLocalMatchesForDownload": { "message": "Não encontrei nenhum dos filmes ou séries da lista nos seus servidores locais." },
"aiToolM3UDownloadStarted": { "message": "Feito! Encontrei $1 de $2 títulos nos seus servidores e iniciei o descarregamento da lista de reprodução M3U.", "placeholders": { "1": { "content": "$1" }, "2": { "content": "$2" } } },
"backToProviders": { "message": "Voltar aos Fornecedores" },
"artistsCounterSingle": { "message": "$total$ Artista", "placeholders": { "total": { "content": "$1" } } },
"artistsCounterLoading": { "message": "A carregar..." },
"downloadingSong": { "message": "A iniciar descarregamento de \"$title$\"", "placeholders": { "title": { "content": "$1" } } },
"songDownloaded": { "message": "\"$title$\" descarregado.", "placeholders": { "title": { "content": "$1" } } },
"errorDownloadingSong": { "message": "Erro ao descarregar \"$title$\"", "placeholders": { "title": { "content": "$1" } } },
"generatingAlbumM3U": { "message": "A gerar M3U para \"$artist$\"", "placeholders": { "artist": { "content": "$1" } } },
"albumM3UGenerated": { "message": "M3U para o álbum \"$artist$\" gerado.", "placeholders": { "artist": { "content": "$1" } } },
"retyingSection": { "message": "A tentar novamente a secção \"$title$\"", "placeholders": { "title": { "content": "$1" } } },
"retrySuccess": { "message": "[SUCESSO] Retentativa de \"$title$\" concluída.", "placeholders": { "title": { "content": "$1" } } },
"retryError": { "message": "[ERRO FINAL] A retentativa para \"$title$\" falhou: $message$", "placeholders": { "title": { "content": "$1" }, "message": { "content": "$2" } } },
"startingRetryPhase": { "message": "A iniciar fase de retentativas para $count$ secções...", "placeholders": { "count": { "content": "$1" } } },
"tokenFoundServers": { "message": "Token $token$... encontrou $count$ servidores.", "placeholders": { "token": { "content": "$1" }, "count": { "content": "$2" } } },
"errorProcessingToken": { "message": "Erro ao processar token $token$...: $message$", "placeholders": { "token": { "content": "$1" }, "message": { "content": "$2" } } },
"plexScanFatalError": { "message": "ERRO FATAL: $message$", "placeholders": { "message": { "content": "$1" } } },
"errorDuringScan": { "message": "Erro durante a análise: $message$", "placeholders": { "message": { "content": "$1" } } },
"stoppingPlexScan": { "message": "A parar análise do Plex..." },
"invalidTokenProvided": { "message": "Token inválido fornecido." },
"tokenAlreadyExists": { "message": "O token já existe." },
"tokenAddedSuccessfully": { "message": "Token adicionado com sucesso." },
"noStreamsFoundForSelection": { "message": "Não foram encontrados streams para a seleção." },
"autoplayBlocked": { "message": "Reprodução automática bloqueada." },
"welcomeToCinePlex": { "message": "" },
"page": { "message": "Página" }
}