added Russian, Turkish, French and Portuguese (Brazilian) languages

This commit is contained in:
Roberto Tonino 2020-07-29 18:41:08 +02:00
parent 897be92e22
commit cbc0e0d710
9 changed files with 1150 additions and 429 deletions

File diff suppressed because one or more lines are too long

View File

@ -623,6 +623,55 @@ export default {
}
}
},
mounted() {
this.locales = this.$i18n.availableLocales
EventBus.$on('settingsTab:revertSettings', this.revertSettings)
EventBus.$on('settingsTab:revertCredentials', this.revertCredentials)
this.$refs.loggedInInfo.classList.add('hide')
let storedLocale = localStorage.getItem('locale')
if (storedLocale) {
this.$i18n.locale = storedLocale
this.currentLocale = storedLocale
}
let storedArl = localStorage.getItem('arl')
if (storedArl) {
this.$refs.loginInput.value = storedArl.trim()
}
let storedAccountNum = localStorage.getItem('accountNum')
if (storedAccountNum) {
this.accountNum = storedAccountNum
}
let spotifyUser = localStorage.getItem('spotifyUser')
if (spotifyUser) {
this.lastUser = spotifyUser
this.spotifyUser = spotifyUser
socket.emit('update_userSpotifyPlaylists', spotifyUser)
}
this.changeSlimDownloads = 'true' === localStorage.getItem('slimDownloads')
let volume = parseInt(localStorage.getItem('previewVolume'))
if (isNaN(volume)) {
volume = 80
localStorage.setItem('previewVolume', volume)
}
window.vol.preview_max_volume = volume
socket.on('init_settings', this.initSettings)
socket.on('updateSettings', this.updateSettings)
socket.on('accountChanged', this.accountChanged)
socket.on('familyAccounts', this.initAccounts)
},
methods: {
revertSettings() {
this.settings = { ...this.lastSettings }
@ -705,55 +754,6 @@ export default {
resetSettings() {
this.settings = { ...this.defaultSettings }
}
},
mounted() {
this.locales = this.$i18n.availableLocales
EventBus.$on('settingsTab:revertSettings', this.revertSettings)
EventBus.$on('settingsTab:revertCredentials', this.revertCredentials)
this.$refs.loggedInInfo.classList.add('hide')
let storedLocale = localStorage.getItem('locale')
if (storedLocale) {
this.$i18n.locale = storedLocale
this.currentLocale = storedLocale
}
let storedArl = localStorage.getItem('arl')
if (storedArl) {
this.$refs.loginInput.value = storedArl.trim()
}
let storedAccountNum = localStorage.getItem('accountNum')
if (storedAccountNum) {
this.accountNum = storedAccountNum
}
let spotifyUser = localStorage.getItem('spotifyUser')
if (spotifyUser) {
this.lastUser = spotifyUser
this.spotifyUser = spotifyUser
socket.emit('update_userSpotifyPlaylists', spotifyUser)
}
this.changeSlimDownloads = 'true' === localStorage.getItem('slimDownloads')
let volume = parseInt(localStorage.getItem('previewVolume'))
if (isNaN(volume)) {
volume = 80
localStorage.setItem('previewVolume', volume)
}
window.vol.preview_max_volume = volume
socket.on('init_settings', this.initSettings)
socket.on('updateSettings', this.updateSettings)
socket.on('accountChanged', this.accountChanged)
socket.on('familyAccounts', this.initAccounts)
}
}
</script>

View File

@ -39,11 +39,12 @@ const es = {
license: 'Licencia'
},
subtitles: {
bugReports: "¿Hay algo que no funcione en Deemix? ¡Díganoslo!",
bugReports: '¿Hay algo que no funcione en Deemix? ¡Díganoslo!',
contributing: '¿Quieres contribuir a este proyecto? ¡Puedes hacerlo de diferentes maneras!',
donations: '¿Quiere contribuir monetariamente? ¡Podrías hacer una donación!'
},
usesLibrary: 'Esta aplicación usa la biblioteca <strong>deemix</strong>, que puedes usar para hacer tu propia interfaz de usuario para deemix.',
usesLibrary:
'Esta aplicación usa la biblioteca <strong>deemix</strong>, que puedes usar para hacer tu propia interfaz de usuario para deemix.',
thanks: `Gracias a <strong>rtonno</fuerte>, <strong>uhwot</fuerte> y <strong>lollilol</fuerte> por ayudarme con este proyecto, a <strong>BasCurtiz</fuerte> y <strong>scarvimane</fuerte> por hacer el icono.`,
upToDate: `Mantente al día con las actualizaciones siguiendo el <a href="https://t.me/RemixDevNews" target="_blank">canal de noticias</a> en Telegram.`,
officialWebsite: 'Página web oficial',
@ -78,7 +79,7 @@ const es = {
invalidURL: 'No se reconoce la URL',
unsupportedURL: 'La URL no está soportada aún',
ISRCnotOnDeezer: 'Pista ISRC no está disponible en Deezer',
notYourPrivatePlaylist: "No puedes descargar otras listas de reproducción privadas.",
notYourPrivatePlaylist: 'No puedes descargar otras listas de reproducción privadas.',
spotifyDisabled: 'Funciones de Spotify no está configurado correctamente.',
trackNotOnDeezer: '¡No se encontró la pista en Deezer!',
albumNotOnDeezer: '¡El álbum no se encuentra en Deezer!',
@ -86,10 +87,12 @@ const es = {
notEncoded: '¡Pista aún no codificada!',
notEncodedNoAlternative: '¡Pista aún no codificada y no se ha encontrado ninguna alternativa!',
wrongBitrate: 'La pista no se encuentra a la velocidad de bitrate deseada.',
wrongBitrateNoAlternative: '¡Pista no encontrada a la tasa de bits deseada y no se ha encontrado ninguna alternativa!',
wrongBitrateNoAlternative:
'¡Pista no encontrada a la tasa de bits deseada y no se ha encontrado ninguna alternativa!',
no360RA: 'La pista no está disponible en Reality Audio 360.',
notAvailable: "¡La pista no está disponible en los servidores de Deezer!",
notAvailableNoAlternative: "¡La pista no está disponible en los servidores de Deezer y no se ha encontrado ninguna alternativa!"
notAvailable: '¡La pista no está disponible en los servidores de Deezer!',
notAvailableNoAlternative:
'¡La pista no está disponible en los servidores de Deezer y no se ha encontrado ninguna alternativa!'
}
},
favorites: {
@ -109,7 +112,8 @@ const es = {
},
linkAnalyzer: {
info: 'Puedes usar esta sección para encontrar más información sobre el enlace que estás tratando de descargar.',
useful: "Esto es útil si está tratando de descargar algunas pistas que no están disponibles en su país y quiere saber dónde están disponibles, por ejemplo.",
useful:
'Esto es útil si está tratando de descargar algunas pistas que no están disponibles en su país y quiere saber dónde están disponibles, por ejemplo.',
linkNotSupported: 'Este enlace aún no está soportado',
linkNotSupportedYet: 'Parece que este enlace aún no está soportado, intenta analizar otro.',
table: {
@ -129,7 +133,8 @@ const es = {
},
search: {
startSearching: '¡Comienza a buscar!',
description: 'Puedes buscar un tema, un álbum entero, un artista, una lista de reproducción... ¡todo! También puedes pegar un enlace de Deezer',
description:
'Puedes buscar un tema, un álbum entero, un artista, una lista de reproducción... ¡todo! También puedes pegar un enlace de Deezer',
fans: '{0} fanáticos',
noResults: 'No hay resultados',
noResultsTrack: 'No se encontraron pistas',
@ -148,7 +153,7 @@ const es = {
loggingIn: 'Conectando...',
loggedIn: 'Conectado',
alreadyLogged: 'Ya está conectado',
loginFailed: "No se puede conectar",
loginFailed: 'No se puede conectar',
loggedOut: 'Desconectado',
cancellingCurrentItem: 'Cancelando el elemento actual.',
currentItemCancelled: 'El elemento actual se ha cancelado.',
@ -212,7 +217,7 @@ const es = {
overwriteFile: {
title: '¿Desea que sobreescriba los archivos?',
y: 'Sí, sobrescribir el archivo',
n: "No, no sobrescribir el archivo",
n: 'No, no sobrescribir el archivo',
t: 'Sobrescribir sólo las etiquetas'
},
fallbackBitrate: 'La solución alternativa de bitrate',

View File

@ -39,11 +39,12 @@ const fr = {
license: 'Licence'
},
subtitles: {
bugReports: "Y a-t-il quelque chose qui ne fonctionne pas avec deemix ? Dites-le nous !",
bugReports: 'Y a-t-il quelque chose qui ne fonctionne pas avec deemix ? Dites-le nous !',
contributing: 'Vous souhaitez contribuer à ce projet ? Vous pouvez le faire de différentes manières !',
donations: 'Vous souhaitez contribuer financièrement ? Vous pourriez faire un don !'
},
usesLibrary: 'Cette application utilise la librairie <strong>deemix</strong>, que vous pouvez utiliser afin de créer votre propre interface utilisateur pour deemix.',
usesLibrary:
'Cette application utilise la librairie <strong>deemix</strong>, que vous pouvez utiliser afin de créer votre propre interface utilisateur pour deemix.',
thanks: `Merci à <strong>rtonno</strong>, <strong>uhwot</strong> et <strong>lollilol</strong> pour m'avoir aidé avec ce projet et à <strong>BasCurtiz</strong> et <strong>scarvimane</strong> pour avoir réalisé l'icône.`,
upToDate: `Restez informé des mises à jour en suivant le <a href="https://t.me/RemixDevNews" target="_blank">canal d'information</a> sur Telegram.`,
officialWebsite: 'Site Officiel',
@ -85,19 +86,19 @@ const fr = {
albumNotOnDeezer: 'Album introuvable sur deezer !',
notOnDeezer: 'Piste non disponible sur Deezer !',
notEncoded: 'Piste pas encore encodée !',
notEncodedNoAlternative: "Piste pas encore encodée et aucune alternative trouvée !",
notEncodedNoAlternative: 'Piste pas encore encodée et aucune alternative trouvée !',
wrongBitrate: 'Piste introuvable au débit souhaité.',
wrongBitrateNoAlternative: 'Piste introuvable au débit souhaité et aucune alternative trouvée !',
no360RA: "La piste n'est pas disponible avec Reality Audio 360.",
notAvailable: "Piste non disponible sur les serveurs de deezer !",
notAvailableNoAlternative: "Piste non disponible sur les serveurs de deezer et aucune alternative trouvée !"
notAvailable: 'Piste non disponible sur les serveurs de deezer !',
notAvailableNoAlternative: 'Piste non disponible sur les serveurs de deezer et aucune alternative trouvée !'
}
},
favorites: {
title: 'Favoris',
noPlaylists: 'Aucune Playlist trouvée',
noAlbums: "Aucuns Album Favori trouvé",
noArtists: "Aucun Artiste Favori trouvé",
noAlbums: 'Aucuns Album Favori trouvé',
noArtists: 'Aucun Artiste Favori trouvé',
noTracks: 'Aucune Piste Favorite trouvée'
},
home: {
@ -109,7 +110,8 @@ const fr = {
}
},
linkAnalyzer: {
info: "Vous pouvez utiliser cette section afin de trouver plus d'informations sur le lien que vous essayer de télcharger.",
info:
"Vous pouvez utiliser cette section afin de trouver plus d'informations sur le lien que vous essayer de télcharger.",
useful:
"C'est utile si vous essayer de télécharger des pistes qui ne sont pas disponibles dans votre pays et que vous souhaitez savoir où elles sont disponibles, par exemple.",
linkNotSupported: "Ce lien n'est pas encore supporté",
@ -151,7 +153,7 @@ const fr = {
loggingIn: 'Connexion',
loggedIn: 'Connecté',
alreadyLogged: 'Déjà connecté',
loginFailed: "Connexion impossible",
loginFailed: 'Connexion impossible',
loggedOut: 'Déconnecté',
cancellingCurrentItem: "Annulation de l'élément actuel.",
currentItemCancelled: 'Élément actuel annulé.',
@ -262,7 +264,7 @@ const fr = {
length: 'Durée de Piste',
barcode: "Code-barres de l'album (UPC)",
bpm: 'BPM',
replayGain: "Gain du Replay",
replayGain: 'Gain du Replay',
label: "Label de l'Album",
lyrics: 'Paroles non synchronisées',
copyright: "Droits d'auteur (copyright)",
@ -277,7 +279,7 @@ const fr = {
multiArtistSeparator: {
title: 'Comment aimeriez-vous séparer vos artistes ?',
nothing: "Enregistrer uniquement l'artiste principal",
default: "En utilisant la spécification standard",
default: 'En utilisant la spécification standard',
andFeat: 'En utilisant & et feat.',
using: 'En utilisant "{0}"'
},

345
src/lang/pt-br.js Normal file
View File

@ -0,0 +1,345 @@
const ptBr = {
globals: {
welcome: 'Bem vindo ao deemix',
back: 'voltar',
loading: 'carregando',
download: 'Baixar {0}',
by: 'por {0}',
in: 'em {0}',
download_hint: 'Baixar',
play_hint: 'Reproduzir',
toggle_download_tab_hint: 'Expandir/Recolher',
clean_queue_hint: 'Limpar os terminados',
cancel_queue_hint: 'Cancelar todos',
listTabs: {
empty: '',
all: 'todos',
top_result: 'Resultado principal',
album: 'álbum | álbuns',
artist: 'artista | artistas',
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çamentos',
playlist: 'playlist | playlists',
compile: 'compilação | compilações',
ep: 'ep | eps',
spotifyPlaylist: 'playlist do spotify | playlists do spotify',
releaseDate: 'data de lançamento',
error: 'erro'
}
},
about: {
titles: {
usefulLinks: 'Links Úteis',
bugReports: 'Relatar Bugs',
contributing: 'Contribuições',
donations: 'Doações',
license: 'Licença'
},
subtitles: {
bugReports: 'Tem algo não funcionando no deemix? Informe-nos!',
contributing: 'Quer contribuir com este projeto? Há várias formas!',
donations: 'Quer contribuir monetariamente? Você pode fazer uma doação!'
},
usesLibrary:
'Este programa usa a biblioteca <strong>deemix</strong>, no qual você pode usar para construir uma UI para o seu deemix.',
thanks: `Obrigado <strong>rtonno</strong>, <strong>uhwot</strong> e <strong>lollilol</strong> por me ajudarem com este projeto e <strong>BasCurtiz</strong> e <strong>scarvimane</strong> por fazerem o ícone.`,
upToDate: `Seja avisado quando houver novas atualizações, siga o <a href="https://t.me/RemixDevNews" target="_blank">nosso canal de notícias</a> no Telegram.`,
officialWebsite: 'Website Oficial',
officialRepo: 'Repositório da Biblioteca Oficial',
officialWebuiRepo: 'Repositório da WebUI Oficial',
officialSubreddit: 'Subreddit Oficial',
newsChannel: 'Canal de Notícia',
questions: `Caso houver dúvidas ou problemas com o programa, procure uma solução no <a href="https://www.reddit.com/r/deemix" target="_blank">subreddit</a>. Caso não encontre nada, você pode fazer um post com a sua dúvida no subreddit.`,
beforeReporting: `Antes de reportar um bug tenha certeza de que o seu deemix esteja atualizado e que o seu relato seja realmente um bug e não um problema no seu lado de usuário.`,
beSure: `Certifique-se de que o bug ocorra em outras máquinas e <strong>NÃO</strong> relate-o caso ele já tenha sido relatado.`,
duplicateReports: 'Relatos duplicados de bug serão fechados, então fique de olho.',
dontOpenIssues: `<strong>NÃO</strong> abra uma issue para fazer questões, o subreddit é para isso.`,
newUI: `Caso seja fluente em python, você pode tentar fazer uma nova UI para o app usando a biblioteca base, ou consertar os bugs da biblioteca com uma pull request na <a href="https://codeberg.org/RemixDev/deemix" target="_blank">repo do projeto</a>.`,
acceptFeatures: `Eu aceito recursos também, mas nada muito complexo e que possa ser implementado diretamente no aplicativo e não na biblioteca.`,
otherLanguages: `Caso seja fluente em outra linguagem de programação você pode tentar portar o deemix para ela!`,
understandingCode: `Precisa de ajuda para entender o código? Contate o RemixDev no Telegram ou Reddit.`,
contributeWebUI: `Caso saiba Vue.js (JavaScript), HTML ou CSS você pode contribuir para a <a href="https://codeberg.org/RemixDev/deemix-webui" target="_blank">WebUI</a>.`,
itsFree: `Mantenha em mente que <strong>este é um projeto gratuito</strong> e que <strong>você deve apoiar os artistas que ama</strong> antes de apoiar os desenvolvedores.`,
notObligated: `Não se sinta obrigado a doar, agradecemos da mesma forma!`,
lincensedUnder: `Este trabalho é licenciado sob a
<a rel="license" href="https://www.gnu.org/licenses/gpl-3.0.en.html" target="_blank"
>GNU General Public License 3.0</a
>.`
},
charts: {
title: 'Charts',
changeCountry: 'Trocar o país',
download: 'Baixe a chart'
},
errors: {
title: 'Erros para {0}',
ids: {
invalidURL: 'URL não reconhecida',
unsupportedURL: 'URL não suportada',
ISRCnotOnDeezer: 'ISRC da faixa não está no deezer',
notYourPrivatePlaylist: 'Você não pode baixar playlists privadas de outros usuários.',
spotifyDisabled: 'Recursos do Spotify não estão configurados corretamente.',
trackNotOnDeezer: 'Faixa não encontrada no deezer!',
albumNotOnDeezer: 'Álbum não encontrada no deezer!',
notOnDeezer: 'Faixa não disponível no Deezer!',
notEncoded: 'Faixa ainda não encodada!',
notEncodedNoAlternative: 'Faixa ainda não encodada e sem alternativas encontradas!',
wrongBitrate: 'Faixa não encontrada no bitrate desejado.',
wrongBitrateNoAlternative: 'Faixa não encontrada no bitrate desejado e sem alternativas encontradas!',
no360RA: 'Faixa não disponível no Reality Audio 360.',
notAvailable: 'Faixa não disponível nos servidores do deezer!',
notAvailableNoAlternative: 'Faixa não disponível nos servidores do deezer e sem alternativas encontradas!'
}
},
favorites: {
title: 'Favorites',
noPlaylists: 'Nenhuma playlists favorita encontrada',
noAlbums: 'Nenhum álbum favorito encontrado',
noArtists: 'Nenhum artista favorito encontrado',
noTracks: 'Nenhuma faixa favorita encontrada'
},
home: {
needTologin: 'Você precisa logar na sua conta do Deezer antes de poder começar a baixar.',
openSettings: 'Abrir configurações',
sections: {
popularPlaylists: 'Playlists populares',
popularAlbums: 'Álbuns mais ouvidos'
}
},
linkAnalyzer: {
info: 'Você pode usar esta seção para descobrir mais informações sobre o link que está tentando baixar.',
useful:
'Esta função é útil caso esteja tentando baixar algumas faixas que não estão disponíveis no seu país e você quer descobrir aonde estão disponíveis, por exemplo.',
linkNotSupported: 'Este link não é suportado ainda',
linkNotSupportedYet: 'Aparentemente este link ainda não é suportado, tente analizar algum outro.',
table: {
id: 'ID',
isrc: 'ISRC',
upc: 'UPC',
duration: 'Duração',
diskNumber: 'Número do disco',
trackNumber: 'Número da faixa',
releaseDate: 'Data de lançamento',
bpm: 'BPM',
label: 'Gravadora',
recordType: 'Tipo de gravação',
genres: 'Gêneros',
tracklist: 'Lista de faixas'
}
},
search: {
startSearching: 'Comece a procurar!',
description:
'Você pode procurar uma faixa, um álbum inteiro, um artista, uma playlist... tudo! Você também pode colar um link do Deezer',
fans: '{0} fãs',
noResults: 'Sem resultados',
noResultsTrack: 'Nenhuma faixa encontrada',
noResultsAlbum: 'Nenhum álbum encontrado',
noResultsArtist: 'Nenhum artista encontrado',
noResultsPlaylist: 'Nenhuma playlist encontrada'
},
searchbar: 'Pesquise tudo o que quiser (ou simplesmente cole um link)',
downloads: 'downloads',
toasts: {
addedToQueue: '{0} adicionado à lista de espera',
alreadyInQueue: '{0} já está na lista de espera!',
finishDownload: '{0} terminou de baixar.',
allDownloaded: 'Todos os downloads terminaram!',
refreshFavs: 'Atualização completa!',
loggingIn: 'Entrando na conta',
loggedIn: 'Conta logada',
alreadyLogged: 'Já está na conta',
loginFailed: 'Não pode entrar na conta',
loggedOut: 'Saindo da conta',
cancellingCurrentItem: 'Cancelando item atual.',
currentItemCancelled: 'Cancelado item atual.',
startAddingArtist: 'Adicionando {0} álbuns à lista de espera',
finishAddingArtist: '{0} álbuns adicionados à lista de espera',
startConvertingSpotifyPlaylist: 'Convertendo faixas do Spotify para faixas do Deezer',
finishConvertingSpotifyPlaylist: 'Playlist do Spotify convertida'
},
settings: {
title: 'Configurações',
languages: 'Linguagens',
login: {
title: 'Login',
loggedIn: 'Você já está logado como {username}',
arl: {
question: 'Como eu pego a minha ARL?',
update: 'Atualizar a ARL'
},
logout: 'Sair'
},
appearance: {
title: 'Aparência',
slimDownloadTab: 'Guia de download slim'
},
downloadPath: {
title: 'Diretório de download'
},
templates: {
title: 'Templates',
tracknameTemplate: 'Template do nome da faixa avulsa',
albumTracknameTemplate: 'Template do nome da faixa no álbum',
playlistTracknameTemplate: 'Template do nome da faixa na playlist'
},
folders: {
title: 'Pastas',
createPlaylistFolder: 'Criar pasta para playlists',
playlistNameTemplate: 'Template do nome da pasta da playlist',
createArtistFolder: 'Criar pasta para artistas',
artistNameTemplate: 'Template do nome da pasta do artista',
createAlbumFolder: 'Criar pasta para álbuns',
albumNameTemplate: 'Template do nome da pasta do álbum',
createCDFolder: 'Criar pasta para discos',
createStructurePlaylist: 'Criar estrutura de pasta para playlists',
createSingleFolder: 'Criar estrutura de pasta para singles'
},
trackTitles: {
title: 'Títulos das faixas',
padTracks: 'Pad das faixas',
paddingSize: 'Substituir tamanho do padding',
illegalCharacterReplacer: 'Substituto de caracter ilegal'
},
downloads: {
title: 'Downloads',
queueConcurrency: 'Downloads simultâneos',
maxBitrate: {
title: 'Bitrate preferido',
9: 'FLAC 1411kbps',
3: 'MP3 320kbps',
1: 'MP3 128kbps'
},
overwriteFile: {
title: 'Posso substituir os arquivos?',
y: 'Sim, substitua os arquivos',
n: 'Não, não substitua os arquivos',
t: 'Substitua apenas as tags'
},
fallbackBitrate: 'Bitrate reserva',
fallbackSearch: 'Pesquisa reserva',
logErrors: 'Criar log para erros',
logSearched: 'Criar log para faixas pesquisadas',
createM3U8File: 'Criar arquivo de playlist',
syncedLyrics: 'Criar arquivos .lyr (Letras sincronizadas)',
playlistFilenameTemplate: 'Template do nome da playlist',
saveDownloadQueue: 'Salvar lista de espera do download ao fechar o programa'
},
covers: {
title: 'Capa dos álbuns',
saveArtwork: 'Salvar as capas',
coverImageTemplate: 'Template do nome da capa',
saveArtworkArtist: 'Salvar imagem do artista',
artistImageTemplate: 'Template da imagem do artista',
localArtworkSize: 'Tamanho da artwork local',
embeddedArtworkSize: 'Tamanho da artwork embutida',
localArtworkFormat: {
title: 'Qual formato você quer que a artwork local seja?',
jpg: 'Uma imagem jpeg',
png: 'Uma imagem png',
both: 'Ambos um jpeg e um png'
},
jpegImageQuality: 'Qualidade do JPEG'
},
tags: {
head: 'Quais tags salvar',
title: 'Título',
artist: 'Artista',
album: 'Álbuns',
cover: 'Capa',
trackNumber: 'Número da faixa',
trackTotal: 'Total de faixas',
discNumber: 'Número de discos',
discTotal: 'Total de discos',
albumArtist: 'Artista do álbum',
genre: 'Gênero',
year: 'Ano',
date: 'Data',
explicit: 'Letras explícitas',
isrc: 'ISRC',
length: 'Tamanho da faixa',
barcode: 'Barcode do álbum (UPC)',
bpm: 'BPM',
replayGain: 'Replay Gain',
label: 'Gravadora do álbum',
lyrics: 'Letras desincronizadas',
copyright: 'Copyright',
composer: 'Compositor',
involvedPeople: 'Pessoas involvidas'
},
other: {
title: 'Outros',
savePlaylistAsCompilation: 'Savar playlists como uma compilação',
useNullSeparator: 'Usar separador nulo',
saveID3v1: 'Salvar ID3v1',
multiArtistSeparator: {
title: 'Como gostaria de separar seus artistas?',
nothing: 'Salvar apenas o artista principal',
default: 'Usando especificação padrão',
andFeat: 'Usando & e feat.',
using: 'Usando "{0}"'
},
singleAlbumArtist: 'Salvar apenas o artista principal do álbum',
albumVariousArtists: 'Manter "Various Artists" em Artistas do Álbum',
removeAlbumVersion: 'Remover "Album Version" do título de faixas',
removeDuplicateArtists: 'Remover combinações de artistas',
dateFormat: {
title: 'Formato da data para arquivos FLAC',
year: 'AAAA',
month: 'MM',
day: 'DD'
},
featuredToTitle: {
title: 'O que eu deveria fazer com os artistas feat.?',
0: 'Nada',
1: 'Remova-os do título da faixa',
3: 'Remova-os do título da faixa e do álbum',
2: 'Mova-os para o título da faixa'
},
titleCasing: 'Formatação do título',
artistCasing: 'Formatação do artista',
casing: {
nothing: 'Manter intocado',
lower: 'minúsculo',
upper: 'MAIÚSCULO',
start: 'No Começo De Cada Palavra',
sentence: 'Como uma frase'
},
previewVolume: 'Volume da prévia',
executeCommand: {
title: 'Comando para executar depois do download',
description: 'Deixe em branco para não executar nada'
}
},
spotify: {
title: 'Destaques do Spotify',
clientID: 'Spotify clientID',
clientSecret: 'Spotify Client Secret',
username: 'Nome de usuário do Spotify'
},
reset: 'Resetar para Padrão',
save: 'Save',
toasts: {
init: 'Configurações carregadas!',
update: 'Configurações atualizadas!',
ARLcopied: 'ARL copiado para o clipboard'
}
},
sidebar: {
home: 'home',
search: 'pesquisa',
charts: 'charts',
favorites: 'favoritos',
linkAnalyzer: 'analizador de links',
settings: 'configurações',
about: 'sobre'
},
tracklist: {
downloadSelection: 'Baixar seleção'
}
}
export default ptBr

View File

@ -39,11 +39,12 @@ const pt = {
license: 'Licenças'
},
subtitles: {
bugReports: "Existe alguma coisa que não funciona no deemix? Informa-nos!",
bugReports: 'Existe alguma coisa que não funciona no deemix? Informa-nos!',
contributing: 'Queres contribuir para o projecto? Podes fazê-lo de diferentes formas!',
donations: 'Desejas contribuir monetariamente? Faz uma doação!'
},
usesLibrary: 'Esta aplicação usa a biblioteca <strong>deemix</strong>, que poderás usar para desenvolver o teu proprio UI para o deemix.',
usesLibrary:
'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> and <strong>scarvimane</strong> por elaborarem o ícone.`,
upToDate: `Mantem-te atualizado seguindo o <a href="https://t.me/RemixDevNews" target="_blank">canal de notícias</a> no Telegram.`,
officialWebsite: 'Site Oficial',
@ -89,8 +90,8 @@ const pt = {
wrongBitrate: 'Faixa não encontrada no bitrate desejado.',
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!"
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!'
}
},
favorites: {
@ -111,7 +112,7 @@ const pt = {
linkAnalyzer: {
info: 'Podes usar esta secção para obteres mais informação sobre o link que estás a tentar transferir.',
useful:
"Isto é útil caso estejas a tentar transferir faixas que não estão disponíveis no teu país e queres saber onde estão disponíveis, por exemplo.",
'Isto é útil caso estejas a tentar transferir faixas que não estão disponíveis no teu país e queres saber onde estão disponíveis, por exemplo.',
linkNotSupported: 'Este link ainda não é suportado',
linkNotSupportedYet: 'Parece que este link ainda não é suportado, tenta analisar outro.',
table: {
@ -215,7 +216,7 @@ const pt = {
overwriteFile: {
title: 'Ficheiros existentes. Substituir?',
y: 'Sim, substituir o ficheiro',
n: "Não substituir o ficheiro",
n: 'Não substituir o ficheiro',
t: 'Sobrescrever apenas as etiquetas'
},
fallbackBitrate: 'Bitrate fallback',

344
src/lang/tr.js Normal file
View File

@ -0,0 +1,344 @@
const tr = {
globals: {
welcome: `Deemix'e hoş geldin.`,
back: `geri`,
loading: `yükleniyor`,
download: 'İndir {0}',
by: '{0} tarafından',
in: '{0} içinde',
download_hint: 'İndir',
play_hint: 'Oynat',
toggle_download_tab_hint: 'Genişlet/Daralt',
clean_queue_hint: 'Tamamlananları Temizle',
cancel_queue_hint: 'Hepsini ',
listTabs: {
empty: '',
all: 'Tümü',
top_result: 'top result',
album: 'albüm | albümler',
artist: 'sanatçı | sanatçılar',
single: 'single | singlelar',
title: 'başlık | başlıklar',
track: 'Parça | Parçalar',
trackN: '0 parça | {n} parça | {n} parça',
releaseN: '0 yayınlanan | {n} yayınlanan | {n} yayınlanan',
playlist: 'oynatma listesi | oynatma listeleri',
compile: 'derleme | derlemeler',
ep: 'kayıt | kayıtlar',
spotifyPlaylist: 'spotify oynatma listesi | oynatma listeleri',
releaseDate: 'yayınlanma tarihi',
error: 'hata'
}
},
about: {
titles: {
usefulLinks: 'Yararlı Bağlantılar',
bugReports: 'Hata Raporları',
contributing: 'Katkı Sağlayanlar',
donations: 'Bağışlar',
license: 'Lisans'
},
subtitles: {
bugReports: "Deemix'te çalışmayan bir şey mi var?, Bize bildirin!",
contributing: 'Projeye katkı sağlamak mı istiyorsun? Farklı yollardan sağlayabilirsin!',
donations: 'Bütçe yardımı mı yapmak istiyorsun? Bağış yapabilirsin!'
},
usesLibrary:
'<strong>deemix</strong> kendi kullanıcı arabiriminizi oluşturabileceğiniz, kendine özgü kütüphanesini kullanıyor.',
thanks: ` <strong>rtonno</strong>, <strong>uhwot</strong> ve <strong>lollilol</strong>'a bu projeye yaptığı katkılardan ve <strong>BasCurtiz</strong> ile <strong>scarvimane</strong>'e ikonlardan dolayı teşekkür ederim.`,
upToDate: `Telegramdaki haber kanalını takip ederek <a href="https://t.me/RemixDevNews" target="_blank"></a>güncellemelerden haberdar olun.`,
officialWebsite: 'İlgili İnternet Sitemiz',
officialRepo: 'İlgili Kütüphanemiz',
officialWebuiRepo: 'İlgili Web Kullanıcı Arayüzü Kütüphanemiz.',
officialSubreddit: 'İlgili Subreddit adresimiz',
newsChannel: 'Haber Kanalı',
questions: `Eğer uygulama ile ilgili sorularınız veya bir probleminiz varsa,ilk önce <a href="https://www.reddit.com/r/deemix" target="_blank">subreddit adresinden </a> sorununuzu arayın. Eğer bir şey bulamazsanız, sorununuz ile ilgili bir gönderi paylaşabilirsiniz.`,
beforeReporting: `Bir hatayı bildirmeden önce, uygulamanın son sürümünde olduğunuza veya sorunun sizden kaynaklı olmayıp bir hata olduğuna emin olduktan sonra emin olun.`,
beSure: `Hatanın başka cihazlarda da olduğunu doğrulayın ve <strong>Bildirilen</strong> bir hatayı tekrar bildirmeyin.`,
duplicateReports: 'Birbirinin aynısı olan hata bildirileri kapatılacaktır, o yüzden dikkatli olun.',
dontOpenIssues: `<strong>Soru sormak</strong> için hata bildirisi yollamayın, bunun için bir subreddit adresimiz var.`,
newUI: `Eğer Phython kullanmakta iyiysen, ana kütüphaneyi kullanan bir kullanıcı arayüzü yapmayı deneyebilir, veya kütüphanedeki hataları düzeltmek için <a href="https://codeberg.org/RemixDev/deemix" target="_blank">deposuna değişiklik isteği yollayabilirsin.</a>.`,
acceptFeatures: `Yeni özellikleri de kabul ediyorum, fakat karışık şeyleri kütüphaneye değil uygulamaya eklendiği için kabul edemiyorum.`,
otherLanguages: `Eğer diğer programlama dillerinde kendine güveniyorsan, deemix'i farklı dillere port etmeye çalışabilirsin!`,
understandingCode: `Kodu anlamak için yardım mı lazım? Reddit üzerinden veya Telegramdan RemixDev'e ulaş.`,
contributeWebUI: `Eğer Vue.js (JavaScript), HTML veya CSS biliyorsan, <a href="https://codeberg.org/RemixDev/deemix-webui" target="_blank">Web Kullanıcı Arayüzüne katkıda bulanabilirsin</a>.`,
itsFree: `Bunun <strong>ücretsiz bir proje olduğunu</strong> ve <strong>geliştiricilerden önce</strong> sevdiğiniz sanatçıları desteklemeniz gerektiğini unutmayın.`,
notObligated: `Kendinizi bağış yapmak zorunda hissetmeyin!, Sizi her halinizle seviyorum!`,
lincensedUnder: `Bu çalışma lisanslıdır:
<a rel="license" href="https://www.gnu.org/licenses/gpl-3.0.en.html" target="_blank"
>GNU General Public License 3.0</a
>.`
},
charts: {
title: 'Grafikler',
changeCountry: 'Ülke Değiştir',
download: 'Grafiği İndir'
},
errors: {
title: '{0} Hatalı bulundu',
ids: {
invalidURL: 'URL geçersiz.',
unsupportedURL: 'URL şimdilik desteklenmiyor',
ISRCnotOnDeezer: 'ISRC parça deezerda bulunmuyor',
notYourPrivatePlaylist: 'Başkalarının özel oynatma listelerini indiremezsin.',
spotifyDisabled: 'Spotify Özellikleri doğru şekilde ayarlanmamış.',
trackNotOnDeezer: `Parça Deezer'da bulunamadı!`,
albumNotOnDeezer: `Albüm Deezer'da bulunamadı!`,
notOnDeezer: `Parça Deezer'da yok!`,
notEncoded: `Parça henüz dönüştürülmedi!`,
notEncodedNoAlternative: 'Parça henüz dönüştürülmedi ve alternatifi bulunamadı!',
wrongBitrate: 'Parça, istenen kalitede bulunamadı!',
wrongBitrateNoAlternative: 'Parça veya alternatifler istenen kalitede bulunamadı!',
no360RA: 'Parça 360 Derece gerçekçi ses olarak bulunamadı!',
notAvailable: 'Parça Deezer sunucularında bulunamadı!',
notAvailableNoAlternative: 'Parça veya Alternatifleri Deezer sunucularında bulunamadı.!'
}
},
favorites: {
title: 'Favoriler',
noPlaylists: 'Oynatma listesi bulunamadı.',
noAlbums: 'Favori albümler bulunamadı.',
noArtists: 'Favori sanatçılar bulunamadı.',
noTracks: 'Favori parçalar bulunamadı.'
},
home: {
needTologin: 'İndirmeden önce Deezer hesabına giriş yapmalısın.',
openSettings: 'Ayarları Aç',
sections: {
popularPlaylists: 'Popüler Oynatma Listeleri',
popularAlbums: 'En çok dinlenen albümler'
}
},
linkAnalyzer: {
info: 'İndirmeye çalıştığın link hakkında daha fazla bilgi için burayı kullanabilirsin.',
useful: 'Mesela, ülkende dinlenebilir olmayan parçaların nerelerde var olduğunu bulmak için kullanabilirsin.',
linkNotSupported: 'Bu link şimdilik desteklenmemektedir.',
linkNotSupportedYet: 'Bu link şimdilik desteklenmiyor gibi duruyor, başkasını analiz etmeyi dene.',
table: {
id: 'ID',
isrc: 'ISRC',
upc: 'UPC',
duration: 'Süre',
diskNumber: 'Sıra numarası',
trackNumber: 'Parça numarası',
releaseDate: 'Yayınlanma tarihi',
bpm: 'BPM',
label: 'Etiketi',
recordType: 'Kayıt Şekli',
genres: 'Türü',
tracklist: 'Parça listesi'
}
},
search: {
startSearching: 'Aramayı Başlat!',
description:
'Bir parçayı, tüm albümü, bir sanatçıyı, bir oynatma listesini... kısaca her şeyi aratabilirsin! Ayrıca Deezer Linki de yapıştırabilirsin!',
fans: '{0} Hayranlar',
noResults: 'Sonuç Bulunamadı',
noResultsTrack: 'Parça bulunamadı',
noResultsAlbum: 'Albüm bulunamadı',
noResultsArtist: 'Sanatçı bulunamadı',
noResultsPlaylist: 'Oynatma Listesi bulunamadı'
},
searchbar: 'İstediğin bir şeyi arat (ya da bir link yapıştır.)',
downloads: 'İndirilenler',
toasts: {
addedToQueue: '{0} kuyruğa eklendi',
alreadyInQueue: '{0} çoktan kuyrukta!',
finishDownload: '{0} indirmesi tamamlandı.',
allDownloaded: 'Tüm indirmeler tamamlandı!',
refreshFavs: 'Yenileme tamamlandı.!',
loggingIn: 'Giriş yapılıyor',
loggedIn: 'Giriş yapıldı',
alreadyLogged: 'Çoktan giriş yapıldı',
loginFailed: 'Giriş yapılamadı',
loggedOut: 'Oturum kapatıldı.',
cancellingCurrentItem: 'Geçerli öğe iptal ediliyor.',
currentItemCancelled: 'Geçerli öğe iptal edildi.',
startAddingArtist: '{0} albüm kuyruğa ekleniyor',
finishAddingArtist: '{0} albüm kuyruğa eklendi.',
startConvertingSpotifyPlaylist: 'Spotify parçaları deezer parçalarına dönüştürülüyor.',
finishConvertingSpotifyPlaylist: 'Spotify oynatma listesi dönüştürüldü.'
},
settings: {
title: 'Ayarlar',
languages: 'Diller',
login: {
title: 'Giriş',
loggedIn: '{username} olarak giriş yaptın.',
arl: {
question: `Kendi ARL'mi nasıl alırım?`,
update: 'ARL güncelle.'
},
logout: ıkış'
},
appearance: {
title: 'Görünüm',
slimDownloadTab: 'İnce indirme sekmesi'
},
downloadPath: {
title: 'İndirilen dizin'
},
templates: {
title: 'Şablonlar',
tracknameTemplate: 'Parça ismi şablonu',
albumTracknameTemplate: 'Albüm parçası şablonu',
playlistTracknameTemplate: 'Oynatma listesi parça şablonu'
},
folders: {
title: 'Dosyalar',
createPlaylistFolder: 'Oynatma listesi için dosya oluştur',
playlistNameTemplate: 'Oynatma listesi dosyası şablonu',
createArtistFolder: 'Sanatçı için dosya oluştur',
artistNameTemplate: 'Sanatçı dosyası şablonu',
createAlbumFolder: 'Albüm için dosya oluştur',
albumNameTemplate: 'Albüm dosyası şablonu',
createCDFolder: 'CDler için dosya oluştur',
createStructurePlaylist: 'Oynatma listeleri için dosya kökü oluştur',
createSingleFolder: 'Singlelar için dosya kökü oluştur'
},
trackTitles: {
title: 'Parça başlıkları',
padTracks: 'İz Numaraları',
paddingSize: 'İz Numaralarını değiştir',
illegalCharacterReplacer: 'Illegal Karakter Düzenleyici'
},
downloads: {
title: 'İndirilenler',
queueConcurrency: 'Devam eden indirmeler',
maxBitrate: {
title: 'Tercih edilmiş Bitrateler (kaliteler)',
9: 'FLAC 1411kbps',
3: 'MP3 320kbps',
1: 'MP3 128kbps'
},
overwriteFile: {
title: 'Dosyaların üstüne yazmalı mıyım?',
y: 'Evet, üstüne yaz',
n: 'Hayır, üstüne yazma',
t: 'Sadece izleri üstüne yaz'
},
fallbackBitrate: 'Bitrate düşürme',
fallbackSearch: 'Düşürme ara',
logErrors: 'Hatalar için günlük tut',
logSearched: 'Aranmış parçalar için günlük tut',
createM3U8File: 'Oynatma sıra listesi oluştur',
syncedLyrics: '.lyr dosyaları oluştur (Senkronize şarkı sözleri)',
playlistFilenameTemplate: 'Oynatma listesi şablonu',
saveDownloadQueue: 'Uygulamayı kapatırken indirme kuyruğunu kaydet'
},
covers: {
title: 'Albüm kapakları',
saveArtwork: 'Kapakları kaydet',
coverImageTemplate: 'Kapak ismi şablonu',
saveArtworkArtist: 'Sanatçı fotoğrafını kaydet',
artistImageTemplate: 'Şarkıcı fotoğraf şablonu',
localArtworkSize: 'Yerel fotoğraf boyutu',
embeddedArtworkSize: 'Gömülü fotoğraf boyutu',
localArtworkFormat: {
title: 'Yerel fotoğrafın hangi formatta olmasını istersin?',
jpg: 'Jpeg dosyası',
png: 'Png dosyası',
both: 'Her ikisi'
},
jpegImageQuality: 'JPEG görüntü kalitesi'
},
tags: {
head: 'Hangi izler kayıt edilsin?',
title: 'Başlık',
artist: 'Sanatçı',
album: 'Albüm',
cover: 'Kapak',
trackNumber: 'Parça Numarası',
trackTotal: 'Tüm Parça',
discNumber: 'Plak Sayısı',
discTotal: 'Tüm Plak',
albumArtist: 'Sanatçı Albümü',
genre: 'Tür',
year: 'Yıl',
date: 'Tarih',
explicit: 'Cinsel içerikli şarkı sözleri',
isrc: 'ISRC',
length: 'Parça Uzunluğu',
barcode: 'Albüm Barkodu (UPC)',
bpm: 'BPM',
replayGain: 'Ses Yüksekliği Normalleştirici',
label: 'Albüm Etiketi',
lyrics: 'Senkronize edilmemiş şarkı sözleri',
copyright: 'Telif hakkı',
composer: 'Besteleyen',
involvedPeople: 'Alakalı Kişiler'
},
other: {
title: 'Diğer',
savePlaylistAsCompilation: 'Oynatma listelerini derleme olarak kaydet',
useNullSeparator: 'Boşluk ayırıcı kullan',
saveID3v1: 'ID3v1 dosyasını da kaydet',
multiArtistSeparator: {
title: 'Sanatçılarınızı nasıl ayırmak istersiniz?',
nothing: 'Sadece ana sanatçıyı kaydet',
default: 'Genel prosedür uygulansın',
andFeat: 'Kullanılanlar & ve Feat.',
using: 'Kullanılan "{0}"'
},
singleAlbumArtist: 'Sadece ana albüm sanatçısını kaydet',
albumVariousArtists: '"Çeşitli sanatçılar"ı sanatçı albümlerinde tut',
removeAlbumVersion: '"Albüm Sürümü"nü parça başlığından çıkart',
removeDuplicateArtists: 'Sanatçı topluluğunu çıkart',
dateFormat: {
title: 'FLAC dosyalar için zaman formatı',
year: 'YYYY',
month: 'AA',
day: 'GG'
},
featuredToTitle: {
title: 'Öne çıkan sanatçıları ne yapmalıyım?',
0: 'Elleme',
1: 'Başlıktan çıkart',
3: 'Başlıktan ve albüm başlığından çıkart',
2: 'Başlığa taşı'
},
titleCasing: 'Albüm harfi',
artistCasing: 'Sanatçı harfi',
casing: {
nothing: 'Değiştirmeden bırak',
lower: 'küçük harf',
upper: 'BÜYÜK HARF',
start: 'Kelimenin başı ile başla',
sentence: 'Cümle gibi yap'
},
previewVolume: 'Ses önizlemesi',
executeCommand: {
title: 'İndirdikten sonra komut uygula',
description: 'Bir şey yapmamak için boş bırak'
}
},
spotify: {
title: 'Spotify Özelliği',
clientID: 'Spotify clientID',
clientSecret: 'Spotify Client Secret',
username: 'Spotify Kullanıcı Adı'
},
reset: 'Varsayılana sıfırla',
save: 'Kaydet',
toasts: {
init: 'Ayarlar yüklendi!',
update: 'Ayarlar güncellendi!',
ARLcopied: 'ARL panoya kopyalandı!'
}
},
sidebar: {
home: 'Ana sayfa',
search: 'Ara',
charts: 'Grafikler',
favorites: 'Favoriler',
linkAnalyzer: 'Link Analizörü',
settings: 'Ayarlar',
about: 'Hakkında'
},
tracklist: {
downloadSelection: 'İndirme bölümü'
}
}
export default tr

View File

@ -9,6 +9,9 @@ import de from '@/lang/de'
import fr from '@/lang/fr'
import id from '@/lang/id'
import pt from '@/lang/pt-pt'
import ptBr from '@/lang/pt-br'
import ru from '@/lang/ru'
import tr from '@/lang/tr'
Vue.use(VueI18n)
@ -23,7 +26,10 @@ const locales = {
de,
fr,
id,
pt
pt,
ptBr,
ru,
tr
}
const i18n = new VueI18n({
@ -36,14 +42,26 @@ const i18n = new VueI18n({
* @param choicesLength {number} an overall amount of available choices
* @returns a final choice index to select plural word by
*/
'ru': function(choice, choicesLength) {
if (choice === 0) { return 0 }
ru: function(choice, choicesLength) {
if (choice === 0) {
return 0
}
var n = Math.abs(choice) % 100
var n1 = n % 10
if (n > 10 && n < 20) { return 3 }
if (n1 > 1 && n1 < 5) { return 2 }
if (n1 == 1) { return 1 }
return 3;
if (n > 10 && n < 20) {
return 3
}
if (n1 > 1 && n1 < 5) {
return 2
}
if (n1 == 1) {
return 1
}
return 3
}
}
})

View File

@ -5,6 +5,9 @@ import de from 'svg-country-flags/svg/de.svg'
import fr from 'svg-country-flags/svg/fr.svg'
import id from 'svg-country-flags/svg/id.svg'
import pt from 'svg-country-flags/svg/pt.svg'
import br from 'svg-country-flags/svg/br.svg'
import ru from 'svg-country-flags/svg/ru.svg'
import tr from 'svg-country-flags/svg/tr.svg'
export default {
it,
@ -13,5 +16,8 @@ export default {
de,
fr,
id,
pt
pt,
ptBr: br,
ru,
tr
}