Merge branch 'main' into 'main'

reviewed and updated. Added strings missing

See merge request RemixDev/deemix-webui!41
This commit is contained in:
RemixDev 2022-08-19 21:44:26 +00:00
commit 340a7b9851

View File

@ -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'
}
}