From 357d781278ecae4240dee2d594644d26df61c846 Mon Sep 17 00:00:00 2001
From: shakesac <miguel@drivewide.pt>
Date: Mon, 1 Aug 2022 12:11:53 +0100
Subject: [PATCH] reviewed and updated. Added strings missing

---
 src/lang/pt-pt.mjs | 237 +++++++++++++++++++++++++++++++++++++--------
 1 file changed, 194 insertions(+), 43 deletions(-)

diff --git a/src/lang/pt-pt.mjs b/src/lang/pt-pt.mjs
index 421a45e..46f62ee 100644
--- a/src/lang/pt-pt.mjs
+++ b/src/lang/pt-pt.mjs
@@ -11,6 +11,13 @@ const pt = {
 		toggle_download_tab_hint: 'Expandir/Recolher',
 		clean_queue_hint: 'Limpar Finalizados',
 		cancel_queue_hint: 'Cancelar Tudo',
+		open_downloads_folder: 'Abrir pasta Transferências',
+		cut: 'cortar',
+		copy: 'copiar',
+		copyLink: 'copiar ligação',
+		copyImageLink: 'copiar ligação da imagem',
+		copyDeezerLink: 'copiar ligação do deezer',
+		paste: 'colar',
 		listTabs: {
 			empty: '',
 			all: 'Tudo',
@@ -20,19 +27,39 @@ const pt = {
 			single: 'single | singles',
 			title: 'título | títulos',
 			track: 'faixa | faixas',
-			trackN: '0 faixas | {n} faixa | {n} faixas',
-			releaseN: '0 lançamentos | {n} lançamento | {n} lançamento',
 			playlist: 'lista de reprodução | listas de reprodução',
 			compile: 'compilação | compilações',
 			ep: 'ep | eps',
+			bundle: 'pacote | pacotes',
+			more: 'Mais álbuns',
+			featured: 'Featured in',
 			spotifyPlaylist: 'lista de reprodução spotify | listas de reprodução spotify',
 			releaseDate: 'data de lançamento',
-			error: 'erro'
-		}
+			error: 'erro',
+			trackN: '0 faixas | {n} faixa | {n} faixas',
+			albumN: '0 albuns | {n} album | {n} albuns',
+			artistN: '0 artistas | {n} artista | {n} artistas',
+			releaseN: '0 lançamentos | {n} lançamento | {n} lançamento',
+			playlistN: '0 listas de reprodução | {n} lista de reprodução | {n} listas de reprodução'	
+		},
+		yes: 'sim',
+		no: 'no',
+		empty: 'vazio'
 	},
 	about: {
+		appStatus: {
+			online: 'app online',
+			offline: 'app offline'
+		},
+		updates: {
+			currentVersion: 'Versão Atual',
+			currentWebuiVersion: 'Versão Atual do WebUI',
+			versionNotAvailable: 'N/D',
+			updateAvailable: `Não estás a usar a versão mais recente: {version}`,
+			deemixVersion: 'versão deemix lib'
+		},
 		titles: {
-			usefulLinks: 'Links Úteis',
+			usefulLinks: 'Ligações Úteis',
 			bugReports: 'Relatório de erros',
 			contributing: 'Contribuir',
 			donations: 'Doações',
@@ -47,7 +74,7 @@ const pt = {
 			'Esta aplicação usa a biblioteca <strong>deemix</strong>, que poderás usar para desenvolver o teu proprio UI para o deemix.',
 		thanks: `Agradeço a <strong>rtonno</strong>, <strong>uhwot</strong> and <strong>lollilol</strong> por me ajudarem neste projeto e a <strong>BasCurtiz</strong> por elaborarem o ícone.`,
 		upToDate: {
-			text: `Mantem-te atualizado seguindo o {newsChannel} no Telegram.`,
+			text: `Mantém-te atualizado seguindo o {newsChannel} no Telegram.`,
 			newsChannel: 'canal de notícias'
 		},
 		officialWebsite: 'Site Oficial',
@@ -56,25 +83,25 @@ const pt = {
 		officialSubreddit: 'Subreddit Oficial',
 		newsChannel: 'Canal de Notícias',
 		questions: {
-			text: `Caso tenhas alguma duvida ou problema com a app, primeiro procura por uma solução no {subreddit}. Caso não encontres nada podes criar um post com a tua questão no subreddit.`,
+			text: `Caso tenhas alguma duvida ou problema com a app, primeiro procura por uma solução no {subreddit}. Caso não encontres nada podes criar uma publicação com a tua questão.`,
 			subreddit: 'subreddit'
 		},
-		beforeReporting: `Antes de reportares um bug certifica-te que estás a correr a versão mais recente e que o que queres reportar é mesmo um bug e não algo que apenas não funciona do teu lado.`,
+		beforeReporting: `Antes de reportares um bug certifica-te que estás a correr a versão mais recente e que se trata realmentede um bug e não apenas algo que não funciona do teu lado.`,
 		beSure: `Certifica-te que o erro é reprodutivel noutros dispositivos e <strong>NÃO</strong> reportes um bug que já tenha sido reportado.`,
 		duplicateReports: 'Bug reports duplicados serão fechados, mantém-te atento a isso.',
 		dontOpenIssues: `<strong>NÃO</strong> abras issues para colocar questões, existe um subreddit para isso.`,
 		newUI: {
-			text: `Caso sejas fluente em python podes tentar criar um novo UI para a aplicação recorrendo à biblioteca base , ou corrigir erros na biblioteca com um pull request no {repo}.`,
+			text: `Caso sejas fluente em python podes tentar criar um novo UI para a aplicação recorrendo à biblioteca base ou corrigir erros na biblioteca com um pull request no {repo}.`,
 			repo: 'repositório'
 		},
 		acceptFeatures: `Também aceito funcionalidades não complexas caso possam ser implementadas directamente na app e não na biblioteca.`,
 		otherLanguages: `Caso sejas fluente noutra linguagem de programação podes tentar migrar o deemix para outra linguagem de programação!`,
-		understandingCode: `Precisas de ajuda a entender o código? Acede a RemixDev no Telegram ou no Reddit.`,
+		understandingCode: `Precisas de ajuda a compreender o código? Acede a RemixDev no Telegram ou no Reddit.`,
 		contributeWebUI: {
 			text: `Caso saibas Vue.js (JavaScript), HTML ou CSS podes contribuir para o {webui}.`,
 			webui: 'WebUI'
 		},
-		itsFree: `Deves ter em conta que <strong>que este projecto é gratuito</strong> e <strong>deverás apoiar os artistas que aprecias</strong> antes de apoiares os programadores.`,
+		itsFree: `Deves ter em conta que <strong>que este projeto é gratuito</strong> e <strong>deverás apoiar os artistas que aprecias</strong> antes de apoiares os programadores.`,
 		notObligated: `Não te sintas obrigado a doar, agradeço-te na mesma!`,
 		lincensedUnder: {
 			text: `Este trabalho esta licenciado sobre a {gpl3}.`,
@@ -88,6 +115,7 @@ const pt = {
 	},
 	errors: {
 		title: 'Erros para {name}',
+		postTitle: 'Erros após transferência',
 		ids: {
 			invalidURL: 'URL não reconhecido',
 			unsupportedURL: 'URL ainda não suportado',
@@ -103,7 +131,13 @@ const pt = {
 			wrongBitrateNoAlternative: 'Faixa não encontrada no bitrate desejado e não foi encontrada alternativa!',
 			no360RA: 'Faixa não disponível em Reality Audio 360.',
 			notAvailable: 'Faixa não disponível nos servidores do deezer!',
-			notAvailableNoAlternative: 'Faixa não disponível nos servidores do deezer e não foi encontrada alternativa!'
+			notAvailableNoAlternative: 'Faixa não disponível nos servidores do deezer e não foi encontrada alternativa!',
+			noSpaceLeft: 'O dispositivo não tem armazenamento disponível!',
+			albumDoesntExists: "A faixa do álbum não existe, recolha de informação falhou.",
+			wrongLicense: "A tua conta não permite fazer streaming da faixa com o bitrate desejado.",
+			wrongGeolocation: "A tua conta não permite fazer streaming da faixa a partir do teu país.",
+			wrongGeolocationNoAlternative:
+				"A tua conta não permite fazer streaming da faixa a partir do teu país e não foi encontrada nenhuma alternativa."
 		}
 	},
 	favorites: {
@@ -114,7 +148,7 @@ const pt = {
 		noTracks: 'Faixas favoritas não encontradas'
 	},
 	home: {
-		needTologin: 'Antes de iniciar transferências é necessário efectuar autenticação na conta Deezer.',
+		needTologin: 'Antes de iniciar transferências é necessário efetuar autenticação na conta Deezer.',
 		openSettings: 'Abrir Definições',
 		sections: {
 			popularPlaylists: 'Listas de reprodução populares',
@@ -139,8 +173,12 @@ const pt = {
 			label: 'Editora',
 			recordType: 'Tipo de Disco',
 			genres: 'Géneros',
-			tracklist: 'Lista de faixas'
-		}
+			tracklist: 'Lista de faixas',
+			readable: 'Legível',
+			available: 'Disponível'
+		},
+		countries: 'Países',
+		noCountries: 'Esta faixa não está disponível em nenhum país.'
 	},
 	search: {
 		startSearching: 'Começa a pesquisar!',
@@ -151,27 +189,38 @@ const pt = {
 		noResultsTrack: 'Faixa não encontrada',
 		noResultsAlbum: 'Álbum não encontrado',
 		noResultsArtist: 'Artista não encontrado',
-		noResultsPlaylist: 'Lista de reprodução não encontrada'
+		noResultsPlaylist: 'Lista de reprodução não encontrada',
+		error: 'Ocorreu um erro, tenta novamente mais tarde.'
 	},
-	searchbar: 'Pesquisa o que quiseres (ou cola um link)',
+	searchbar: 'Procura o que quiseres (ou cola uma ligação)',
 	downloads: 'transferências',
 	toasts: {
 		addedToQueue: '{item} adicionados à fila',
 		alreadyInQueue: '{item} já está na fila!',
 		finishDownload: '{item} foi transferido.',
 		allDownloaded: 'Todas as transferências terminadas!',
-		refreshFavs: 'Actualizar terminados!',
+		refreshFavs: 'Recarregamento terminado!',
 		loggingIn: 'A autenticar',
 		loggedIn: 'Autenticado',
 		alreadyLogged: 'Já estás autenticado',
-		loginFailed: 'Nao foi possivel iniciar sessão',
-		loggedOut: 'Desconectado',
-		cancellingCurrentItem: 'A cancelar item actual.',
-		currentItemCancelled: 'Item actual cancelado.',
+		loginFailed: 'Não foi possível iniciar sessão',
+		loggedOut: 'Sessão encerrada',
+		cancellingCurrentItem: 'A cancelar item atual.',
+		currentItemCancelled: 'Item atual cancelado.',
 		startAddingArtist: 'A adicionar {artist} álbuns à fila',
 		finishAddingArtist: 'Adicionados {artist} álbuns à fila',
 		startConvertingSpotifyPlaylist: 'A converter faixas do spotify em faixas do deezer',
-		finishConvertingSpotifyPlaylist: 'Lista de reprodução do Spotify convertida.'
+		finishConvertingSpotifyPlaylist: 'Lista de reprodução do Spotify convertida.',
+		loginNeededToDownload: 'É necessário iniciar sessão para transferir faixas!',
+		deezerNotAvailable: 'O Deezer não está disponível no teu país. Deverás utilizar uma VPN.',
+		deezerNotReachable: "A app não consegue ligar-se ao Deezer. Verifica a tua ligação à internet, a tua firewall ou o teu antivirus.",
+		startGeneratingItems: 'A processar {n} itens...',
+		finishGeneratingItems: '{n} itens gerados.',
+		noLovedPlaylist: 'No loved tracks playlist!',
+		checkingUpdates: 'A procurar atualizações...',
+		noUpdateAvailable: 'Não existem novas atualizações',
+		updateAvailable: 'Existe uma atualização disponível!',
+		wrongSpotifyUsername: '{username} não é um nome de utilizador válido no spotify'
 	},
 	settings: {
 		title: 'Definições',
@@ -181,13 +230,57 @@ const pt = {
 			loggedIn: 'Estás autenticado como {username}',
 			arl: {
 				question: 'Como obter o meu ARL?',
-				update: 'Actualizar ARL'
+				update: 'Atualizar ARL',
+				howTo: {
+					prologue: {
+						p1: 'O Deezer monitoriza sessões abertas utilizando um cookie chamado ARL.',
+						p2: 'O Deemix utiliza este cookie para obter metadata necessária para transferir faixas do Deezer.',
+						p3: 'Os ARL duram 3 meses, após esse período o Deezer solicita novo inicio de sessão. O mesmo método é usado no deemix.',
+						p4: 'Seguindo um dos guias mais abaixo poderás obter o teu próprio ARL.',
+						warning: "Utiliza este método apenas no caso do email e palavra-passe não funcionarem."
+					},
+					chromeSteps: {
+						title: 'Chrome',
+						step1: 'Abrir Chrome',
+						easyWay: {
+							title: 'Chrome (Método simples)',
+							step3: 'Clique no pequeno cadeado ao lado do URL',
+							step4: 'Clique em Cookies > deezer.com > cookies > arl',
+							step5: 'Seleciona o texto após Conteúdo, e faz cópia'
+						},
+						step4: "Vai ao separador Aplicação (caso não o vejas clique na seta dupla)",
+						videoGuide: {
+							text: "Aqui tens um {videoGuide}",
+							link: 'guia em vídeo'
+						}
+					},
+					firefoxSteps: {
+						title: 'Firefox',
+						step1: 'Abrir Firefox',
+						step4: "Ir ao separador Armazenamento (caso não o vejas clique na seta dupla)"
+					},
+					commonSteps: {
+						step2: 'Acede a www.deezer.com e inicia a sessão na tua conta',
+						step3: 'Após inicio de sessão carrega no F12 para abrir as Ferramentas de Programador',
+						step5: 'Expandir cookie',
+						step6: 'Seleciona www.deezer.com',
+						step7: 'Procura o cookie `arl` (Deverá ter 192 caracteres)',
+						step8: 'Certifica-te que apenas copias o valor e não o cookie completo',
+						lastStep: "E isso é o teu ARL que agora poderás utilizar na tua app"
+					}
+				},
 			},
-			logout: 'Sair'
+			logout: 'Sair',
+			login: 'Iniciar sessão',
+			email: 'E-mail',
+			password: 'Palavra-passe'
 		},
 		appearance: {
-			title: 'Aspecto',
-			slimDownloadTab: 'Aba de transferências estreita'
+			title: 'Aspeto',
+			slimDownloadTab: 'Separador de transferências estreito',
+			slimSidebar: 'Barra lateral estreita',
+			searchButton: 'Mostrar botão de pesquisa',
+			bitrateTags: 'Mostrar etiqueta de qualidade na fila de transferências'
 		},
 		downloadPath: {
 			title: 'Caminho das transferências'
@@ -195,8 +288,11 @@ const pt = {
 		templates: {
 			title: 'Formatos',
 			tracknameTemplate: 'Formato do nome de faixa',
+			tracknameAvailableVariables: 'Variáveis associadas ao nome das faixas',
 			albumTracknameTemplate: 'Formato do nome de Álbum',
-			playlistTracknameTemplate: 'Formato do nome de lista de reprodução'
+			albumTracknameAvailableVariables: 'Variáveis associadas ao nome dos álbuns',
+			playlistTracknameTemplate: 'Formato do nome de lista de reprodução',
+			playlistTracknameAvailableVariables: 'Variáveis associadas ao nome das listas de reprodução'
 		},
 		folders: {
 			title: 'Pastas',
@@ -229,16 +325,20 @@ const pt = {
 				title: 'Ficheiros existentes. Substituir?',
 				y: 'Sim, substituir o ficheiro',
 				n: 'Não substituir o ficheiro',
-				t: 'Subescrever apenas as etiquetas'
+				t: 'Substituir apenas as etiquetas',
+				b: 'Não, manter ambos os ficheiros e numerar o ficheiro duplicado',
+				e: "Não e ignorar as extensões"
 			},
 			fallbackBitrate: 'Bitrate fallback',
 			fallbackSearch: 'Fallback de pesquisa',
+			fallbackISRC: 'Fallback com pesquisa ISRC',
+			feelingLucky: 'Arriscar com CDNs e caches',
 			logErrors: 'Criar histórico para erros',
 			logSearched: 'Criar histórico para faixas pesquisadas',
 			createM3U8File: 'Criar ficheiro de lista de reprodução',
 			syncedLyrics: 'Criar ficheiro .lrc (Letra Sincronizada)',
 			playlistFilenameTemplate: 'Formato do nome de ficheiro da lista de reprodução',
-			saveDownloadQueue: 'Guardar fila de transferências ao fechar a aplicação'
+			clearQueueOnExit: 'Limpar fila de transferências ao fechar a aplicação'
 		},
 		covers: {
 			title: 'Capas do Álbum',
@@ -246,20 +346,26 @@ const pt = {
 			coverImageTemplate: 'Modelo do nome da capa',
 			saveArtworkArtist: 'Salvar imagem do artista',
 			artistImageTemplate: 'Modelo de imagem do artista',
-			localArtworkSize: 'Tamanho do trabalho artístico local',
-			embeddedArtworkSize: 'Tamanho do trabalho artístico incorporado',
+			localArtworkSize: 'Tamanho da arte gráfica local',
+			embeddedArtworkSize: 'Tamanho da arte gráfica incorporada',
 			localArtworkFormat: {
-				title: 'Em que formato desejas o trabalho artístico local?',
-				jpg: 'Em imagem jpeg',
-				png: 'Em imagem png',
+				title: 'Em que formato desejas guardar localmente a arte gráfica?',
+				jpg: 'Em jpeg',
+				png: 'Em png',
 				both: 'Em jpeg e em png'
 			},
-			jpegImageQuality: 'Qualidade de imagem JPEG'
+			jpegImageQuality: 'Qualidade de imagem JPEG',
+			embeddedArtworkPNG: 'Guardar arte gráfica incorporada como PNG',
+			embeddedPNGWarning: 'PNGs não são oficialmente suportados pelo Deezer e podem ocorrer erros',
+			imageSizeWarning: 'Qualquer resolução acima de x1200 não são oficialmente suportados pelo Deezer e podem ocorrer erros',
+			coverDescriptionUTF8: 'Guardar descrição da capa como UTF8? (iTunes Cover Fix)'
+
 		},
 		tags: {
 			head: 'Etiquetas a guardar',
 			title: 'Título',
 			artist: 'Artista',
+			artists: 'Etiqueta extra ARTISTAS',
 			album: 'Álbum',
 			cover: 'Capa',
 			trackNumber: 'Número de faixa',
@@ -278,12 +384,16 @@ const pt = {
 			replayGain: 'ReplayGain',
 			label: 'Editora do álbum',
 			lyrics: 'Letra da música não sincronizada',
+			syncedLyrics: 'Letra da música sincronizada',
 			copyright: 'Direitos de Autor',
 			composer: 'Compositor',
-			involvedPeople: 'Pessoas envolvidas'
+			involvedPeople: 'Pessoas envolvidas',
+			artistsWarning:
+			"Desativar a etiqueta ARTISTAS ao não usar especificações padrão, não preservará o suporte a multi-artistas"
 		},
 		other: {
 			title: 'Outros',
+			autoCheckForUpdates: 'Procurar novas atualizações ao iniciar',
 			savePlaylistAsCompilation: 'Guardar listas de reprodução como compilação',
 			useNullSeparator: 'Usar separador nulo',
 			saveID3v1: 'Também guardar ID3v1',
@@ -292,7 +402,9 @@ const pt = {
 				nothing: 'Guardar apenas o artista principal',
 				default: 'Usar especificação padrão',
 				andFeat: 'Usar & e feat.',
-				using: 'Usar "{separator}"'
+				using: 'Usar "{separator}"',
+				warning:
+				'Utilizar outro separador para além das especificações standard irão adicionar uma etiqueta extra ARTISTAS para perservar o suporte a multi-artistas'
 			},
 			singleAlbumArtist: 'Guardar apenas o artista principal do álbum',
 			albumVariousArtists: 'Manter "Various Artists" nos Artistas do Álbum',
@@ -330,13 +442,51 @@ const pt = {
 			title: 'Funcionalidades Spotify',
 			clientID: 'Spotify clientID',
 			clientSecret: 'Spotify Client Secret',
-			username: 'nome de utilizador Spotify'
+			username: 'nome de utilizador Spotify',
+			question: 'Como ativo as funcionalidades Spotify?',
+			howTo: {
+				prologue: {
+					p1: '"Funcionalidades Spotify" são um conjunto de funcionalidades que permitem converter ligações de faixas e álbuns do Spotify em ligações do Deezer.',
+					p2: 'Caso forneças uma ligação para uma lista de reprodução Spotify a aplicação converterá automaticamente tosas as ligações de faixas em ligações de faixas Deezer.',
+					p3: 'Ao ativar estas funcionalidades também permitirá ver as tuas listas de reprodução públicas no separator Favoritos.'
+				},
+				info: 'Por razões de segurança, deverás fornecer o teu próprio Client ID e Client Secret',
+				clientSecretQuestion: {
+					title: 'Como obtenho o meu Client ID e Client Secret?',
+					step1: {
+						text: 'Ligar a {spotifyDevelopersDashboard} e iniciar sessão com a tua conta Spotify.',
+						spotifyDevelopersDashboard: "Spotify for Developers's Dashboard"
+					},
+					step2: {
+						text: 'Clique em "Create an App".',
+						imageAlt: "Botão 'Create an App' no 'Spotify for Developers's Dashboard'"
+					},
+					step3: {
+						text: 'Preenche os campos "App name" e "App description" e marca ambas as caixas de seleção. E depois clique no botão "Create".',
+						imageAlt: 'Formulário "Create an app form"'
+					},
+					step4: {
+						text: 'O Client ID já está visível. Caso clique em "Show Client Secret" o segredo do cliente será revelado.',
+						imageAlt: 'Imagem do client ID e Secret'
+					},
+					step5: 'Copia e cola os resultados nos campos correspondentes das definições.'
+				},
+				usernameQuestion: {
+					title: 'Como obtenho o meu nome de utilizador Spotify?',
+					step1: {
+						text: "Podes obter o teu nome de utilizador na {overviewPage} no site do Spotify.",
+						overviewPage: 'Overview page'
+					}
+				}
+			}
 		},
-		reset: 'Repor configurações padrão',
+		reset: 'Repor definições padrão',
+		resetMessage: 'Tens a certeza que queres repor as definições padrão?',
 		save: 'Guardar',
 		toasts: {
-			init: 'Configurações carregadas!',
-			update: 'Configurações actualizadas',
+			init: 'Definições carregadas!',
+			update: 'Definições atualizadas',
+			reset: 'Definições padrão repostas!',
 			ARLcopied: 'ARL copiado para area de transferencia'
 		}
 	},
@@ -347,10 +497,11 @@ const pt = {
 		favorites: 'favoritos',
 		linkAnalyzer: 'analizador de links',
 		settings: 'definições',
+		logs: 'logs',
 		about: 'sobre'
 	},
 	tracklist: {
-		downloadSelection: 'Transferir seleccionados'
+		downloadSelection: 'Transferir selecionados'
 	}
 }