navidrome/resources/i18n/pt-br.json
Deluan Quintão 758e64c999
feat(scanner): per-library PID configuration (#6252)
* feat(model): add per-library PID config columns

* refactor(metadata): pass PID config to ToMediaFile and add spec validation

* feat(scanner): rescan only libraries whose PID config changed

* feat(server): validate library PID config and rescan on change

* feat(ui): edit per-library PID config

* fix(ui): label the PID mode selects

* fix: tighten per-library PID rescan edge cases

An interrupted PID rescan no longer upgrades every library to a full scan, a save that loses the race for the scanner logs at debug, the confirm dialog only shows when the effective PID spec changes, and it now gets translation keys.

* refactor(metadata): pass the library to ToMediaFile

ToMediaFile and core.Inspect took the library ID and its PID config as
separate arguments, so a caller could mix values from two libraries. They
now take the model.Library and resolve the effective PID config from it.

* chore: tidy per-library PID comments, PropTypes and migration

Trim comments that restated the code, add PropTypes to the new UI
components, and recreate the migration with make migration-sql.

* fix(ui): show the PID spec help under its input

* feat(cmd): make inspect use the file's library PID config

inspect always used the global PID config, so it showed different IDs than
the scanner for files in a library with an override. It now finds the
file's library in the DB and uses its effective config, falling back to
the global config when there is no DB or the file is outside every
library. It never creates a DB. The library path matcher moves from
core/playlists to model so both can use it.

* refactor: simplify per-library PID code

Share the DB-file check between CLI commands, move ErrAlreadyScanning to
model so core no longer imports scanner, read the libraries once for
insights, and let ValidatePIDSpec accept an empty spec and look tags up
directly. In the scanner, use FullScanInProgress instead of a second
flag, and skip recomputing album IDs when the album spec did not change.
In the UI, share the PID inputs between Create and Edit, and use docsUrl.

* feat(ui): add section titles to Library Create and pre-fill Custom PID specs

Custom now starts from the global spec, so admins edit a working spec
instead of typing one from scratch.

* fix(inspect): map files with the library-relative path the scanner uses

Inspect gave metadata the file's directory as typed, so folder-based PIDs
never matched the DB. It now uses the path relative to the library root,
through the scanner's helper, which moves to model.

* fix(scanner): say when a PID rescan only covers target folders

* fix: reject tag aliases in album PID specs and match root libraries

Tags are stored under canonical names, so an alias in a spec always reads
as empty. In an album spec that gives every album the same ID, so album
specs now require the tag name. Track specs keep accepting aliases, since
the default one uses them. LibraryMatcher now matches paths under a
library at the filesystem root.

* refactor(model): move the tag alias lookup to tag_mappings.go

* test: run the library matcher and inspect tests on Windows

Build test paths with filepath instead of Unix literals, so they use the
OS separator like filepath.Abs output, and drop the Windows skips.

* feat(ui): add pt-BR translations for per-library PID settings
2026-10-02 05:05:32 -04:00

781 lines
No EOL
32 KiB
JSON

{
"languageName": "Português (Brasil)",
"resources": {
"song": {
"name": "Música |||| Músicas",
"fields": {
"albumArtist": "Artista do Álbum",
"duration": "Duração",
"trackNumber": "#",
"playCount": "Execuções",
"title": "Título",
"artist": "Artista",
"album": "Álbum",
"path": "Arquivo",
"genre": "Gênero",
"compilation": "Coletânea",
"year": "Ano",
"size": "Tamanho",
"updatedAt": "Últ. Atualização",
"bitRate": "Bitrate",
"discSubtitle": "Sub-título do disco",
"starred": "Favorita",
"comment": "Comentário",
"rating": "Classificação",
"quality": "Qualidade",
"bpm": "BPM",
"playDate": "Últ. Execução",
"channels": "Canais",
"createdAt": "Adiconado em",
"grouping": "Agrupamento",
"mood": "Mood",
"participants": "Outros Participantes",
"tags": "Outras Tags",
"mappedTags": "Tags mapeadas",
"rawTags": "Tags originais",
"bitDepth": "Profundidade de bits",
"sampleRate": "Taxa de amostragem",
"missing": "Ausente",
"libraryName": "Biblioteca",
"composer": "Compositor",
"disc": "Disco %{discNumber}",
"albumGain": "Ganho do álbum",
"trackGain": "Ganho da faixa"
},
"actions": {
"addToQueue": "Adicionar à fila",
"playNow": "Tocar agora",
"addToPlaylist": "Adicionar à playlist",
"shuffleAll": "Aleatório",
"download": "Baixar",
"playNext": "Toca a seguir",
"info": "Detalhes",
"showInPlaylist": "Ir para playlist",
"instantMix": "Mix Instantâneo"
}
},
"album": {
"name": "Álbum |||| Álbuns",
"fields": {
"albumArtist": "Artista do Álbum",
"artist": "Artista",
"duration": "Duração",
"songCount": "Músicas",
"playCount": "Execuções",
"name": "Nome",
"genre": "Gênero",
"compilation": "Coletânea",
"year": "Ano",
"updatedAt": "Últ. Atualização",
"comment": "Comentário",
"rating": "Classificação",
"createdAt": "Adicionado em",
"size": "Tamanho",
"originalDate": "Original",
"releaseDate": "Data de Lançamento",
"releases": "Versão||||Versões",
"released": "Lançado",
"recordLabel": "Selo",
"catalogNum": "Nr. Catálogo",
"releaseType": "Tipo",
"grouping": "Agrupamento",
"media": "Mídia",
"mood": "Mood",
"date": "Data de Lançamento",
"missing": "Ausente",
"libraryName": "Biblioteca"
},
"actions": {
"playAll": "Tocar",
"playNext": "Tocar em seguida",
"addToQueue": "Adicionar à fila",
"shuffle": "Aleatório",
"addToPlaylist": "Adicionar à playlist",
"download": "Baixar",
"info": "Detalhes",
"share": "Compartilhar",
"refresh": "Atualizar Metadados"
},
"lists": {
"all": "Todos",
"random": "Aleatório",
"recentlyAdded": "Recém-adicionados",
"recentlyPlayed": "Recém-tocados",
"mostPlayed": "Mais tocados",
"starred": "Favoritos",
"topRated": "Melhor classificados"
}
},
"artist": {
"name": "Artista |||| Artistas",
"fields": {
"name": "Nome",
"albumCount": "Total de Álbuns",
"songCount": "Total de Músicas",
"playCount": "Execuções",
"rating": "Classificação",
"genre": "Gênero",
"size": "Tamanho",
"role": "Role",
"missing": "Ausente"
},
"roles": {
"albumartist": "Artista do Álbum |||| Artistas do Álbum",
"artist": "Artista |||| Artistas",
"composer": "Compositor |||| Compositores",
"conductor": "Maestro |||| Maestros",
"lyricist": "Letrista |||| Letristas",
"arranger": "Arranjador |||| Arranjadores",
"producer": "Produtor |||| Produtores",
"director": "Diretor |||| Diretores",
"engineer": "Engenheiro |||| Engenheiros",
"mixer": "Mixador |||| Mixadores",
"remixer": "Remixador |||| Remixadores",
"djmixer": "DJ Mixer |||| DJ Mixers",
"performer": "Músico |||| Músicos",
"maincredit": "Artista do Álbum ou Artista |||| Artistas do Álbum ou Artistas"
},
"actions": {
"shuffle": "Aleatório",
"radio": "Rádio",
"topSongs": "Mais tocadas"
}
},
"user": {
"name": "Usuário |||| Usuários",
"fields": {
"userName": "Usuário",
"isAdmin": "Admin?",
"lastLoginAt": "Últ. Login",
"updatedAt": "Últ. Atualização",
"name": "Nome",
"password": "Senha",
"createdAt": "Data de Criação",
"changePassword": "Trocar Senha?",
"currentPassword": "Senha Atual",
"newPassword": "Nova Senha",
"token": "Token",
"lastAccessAt": "Últ. Acesso",
"libraries": "Bibliotecas",
"scrobbleFilter": "Filtro de scrobble"
},
"helperTexts": {
"name": "Alterações no seu nome só serão refletidas no próximo login",
"libraries": "Selecione bibliotecas específicas para este usuário, ou deixe vazio para usar bibliotecas padrão",
"scrobbleFilter": "Músicas que correspondem a estas regras de playlist inteligente não são enviadas ao Last.fm, ListenBrainz ou plugins de scrobble. Usa a mesma sintaxe JSON e o mesmo comportamento das playlists inteligentes. Exemplo: {\"all\":[{\"lt\":{\"rating\":4}}]}. Deixe vazio para enviar scrobbles de todas as músicas. As contagens de reprodução locais não são afetadas."
},
"notifications": {
"created": "Novo usuário criado",
"updated": "Usuário atualizado com sucesso",
"deleted": "Usuário deletado com sucesso"
},
"message": {
"listenBrainzToken": "Entre seu token do ListenBrainz",
"clickHereForToken": "Clique aqui para obter seu token",
"selectAllLibraries": "Selecionar todas as bibliotecas",
"adminAutoLibraries": "Usuários administradores têm acesso automático a todas as bibliotecas"
},
"validation": {
"librariesRequired": "Pelo menos uma biblioteca deve ser selecionada para usuários não-administradores",
"invalidScrobbleFilter": "Devem ser regras válidas de playlist inteligente. Limite, deslocamento e intervalo de atualização não são suportados."
}
},
"player": {
"name": "Tocador |||| Tocadores",
"menuName": "Tocadores e chaves de API",
"fields": {
"name": "Nome",
"transcodingId": "Conversão",
"maxBitRate": "Bitrate máx",
"client": "Cliente",
"userName": "Usuário",
"lastSeen": "Últ. acesso",
"reportRealPath": "Use paths reais",
"scrobbleEnabled": "Enviar scrobbles para serviços externos",
"hasApiKey": "Chave de API"
},
"actions": {
"generateApiKey": "Gerar chave de API",
"regenerateApiKey": "Gerar nova",
"revokeApiKey": "Revogar",
"copyApiKey": "Copiar"
},
"message": {
"apiKeyActive": "Este tocador tem uma chave de API. Use-a no seu app como chave de API, ou como senha se o app não usar autenticação por token.",
"apiKeyNone": "Sem chave de API. Gere uma para conectar um app a este tocador.",
"apiKeyNoneOther": "Sem chave de API.",
"apiKeyPending": "Copie esta chave agora. Ela será salva quando você clicar em Salvar e não será exibida novamente.",
"apiKeyRevokePending": "A chave de API será removida quando você salvar.",
"deleteWithKeyTitle": "Excluir tocador",
"deleteWithKeyContent": "Este tocador tem uma chave de API. Os apps que a usam vão parar de funcionar."
},
"notifications": {
"apiKeyCopied": "Chave de API copiada para o clipboard"
},
"validation": {
"apiKeyFormat": "Formato de chave de API inválido"
}
},
"transcoding": {
"name": "Conversão |||| Conversões",
"fields": {
"name": "Nome",
"targetFormat": "Formato",
"defaultBitRate": "Bitrate padrão",
"command": "Comando"
},
"choices": {
"noDefaultBitRate": "Nenhum"
}
},
"playlist": {
"name": "Playlist |||| Playlists",
"fields": {
"name": "Nome",
"duration": "Duração",
"ownerName": "Dono",
"public": "Pública",
"updatedAt": "Últ. Atualização",
"createdAt": "Data de Criação",
"songCount": "Músicas",
"comment": "Comentário",
"sync": "Auto-importar",
"path": "Importar de",
"starred": "Favorita"
},
"actions": {
"selectPlaylist": "Selecione a playlist:",
"addNewPlaylist": "Criar \"%{name}\"",
"export": "Exportar",
"makePublic": "Pública",
"makePrivate": "Pessoal",
"saveQueue": "Salvar fila em nova Playlist",
"searchOrCreate": "Buscar playlists ou criar nova...",
"pressEnterToCreate": "Pressione Enter para criar nova playlist",
"removeFromSelection": "Remover da seleção"
},
"message": {
"duplicate_song": "Adicionar músicas duplicadas",
"song_exist": "Algumas destas músicas já existem na playlist. Você quer adicionar as duplicadas ou ignorá-las?",
"noPlaylistsFound": "Nenhuma playlist encontrada",
"noPlaylists": "Nenhuma playlist disponível"
}
},
"radio": {
"name": "Rádio |||| Rádios",
"fields": {
"name": "Nome",
"streamUrl": "Endereço de stream",
"homePageUrl": "Home Page",
"updatedAt": "Últ. Atualização",
"createdAt": "Data de Criação"
},
"actions": {
"playNow": "Tocar agora"
}
},
"share": {
"name": "Compartilhamento |||| Compartilhamentos",
"fields": {
"username": "Compartilhado por",
"url": "Link",
"description": "Descrição",
"contents": "Conteúdo",
"expiresAt": "Dt. Expiração",
"lastVisitedAt": "Última visita",
"visitCount": "Visitas",
"format": "Formato",
"maxBitRate": "Bitrate máx",
"updatedAt": "Últ. Atualização",
"createdAt": "Data de Criação",
"downloadable": "Permitir Baixar?"
}
},
"missing": {
"name": "Arquivo ausente |||| Arquivos ausentes",
"fields": {
"path": "Caminho",
"size": "Tamanho",
"updatedAt": "Desaparecido em",
"libraryName": "Biblioteca"
},
"actions": {
"remove": "Remover",
"remove_all": "Remover todos"
},
"notifications": {
"removed": "Arquivo(s) ausente(s) removido(s)"
},
"empty": "Nenhum arquivo ausente"
},
"library": {
"name": "Biblioteca |||| Bibliotecas",
"fields": {
"name": "Nome",
"path": "Caminho",
"remotePath": "Caminho Remoto",
"lastScanAt": "Último Scan",
"songCount": "Músicas",
"albumCount": "Álbuns",
"artistCount": "Artistas",
"totalSongs": "Músicas",
"totalAlbums": "Álbuns",
"totalArtists": "Artistas",
"totalFolders": "Pastas",
"totalFiles": "Arquivos",
"totalMissingFiles": "Arquivos Ausentes",
"totalSize": "Tamanho Total",
"totalDuration": "Duração",
"defaultNewUsers": "Padrão para Novos Usuários",
"createdAt": "Data de Criação",
"updatedAt": "Últ. Atualização",
"pidAlbum": "Agrupamento de álbuns",
"pidTrack": "Identificação das faixas"
},
"sections": {
"basic": "Informações Básicas",
"statistics": "Estatísticas",
"pid": "IDs Persistentes"
},
"pid": {
"global": "Usar configuração global (%{value})",
"folder": "Pasta (um álbum por pasta)",
"custom": "Personalizado",
"spec": "Especificação do PID",
"help": "Tags e atributos que identificam um item. Consulte a sintaxe na documentação:",
"docs": "IDs Persistentes"
},
"actions": {
"scan": "Scanear Biblioteca",
"manageUsers": "Gerenciar Acesso do Usuário",
"viewDetails": "Ver Detalhes",
"quickScan": "Scan Rápido",
"fullScan": "Scan Completo"
},
"notifications": {
"created": "Biblioteca criada com sucesso",
"updated": "Biblioteca atualizada com sucesso",
"deleted": "Biblioteca excluída com sucesso",
"scanStarted": "Scan da biblioteca iniciada",
"scanCompleted": "Scan da biblioteca concluída",
"quickScanStarted": "Scan rápido iniciado",
"fullScanStarted": "Scan completo iniciado",
"scanError": "Erro ao iniciar o scan. Verifique os logs"
},
"validation": {
"nameRequired": "Nome da biblioteca é obrigatório",
"pathRequired": "Caminho da biblioteca é obrigatório",
"pathNotDirectory": "Caminho da biblioteca deve ser um diretório",
"pathNotFound": "Caminho da biblioteca não encontrado",
"pathNotAccessible": "Caminho da biblioteca não está acessível",
"pathInvalid": "Caminho da biblioteca inválido"
},
"messages": {
"deleteConfirm": "Tem certeza que deseja excluir esta biblioteca? Isso removerá todos os dados associados.",
"scanInProgress": "Scan em progresso...",
"noLibrariesAssigned": "Nenhuma biblioteca atribuída a este usuário",
"pidChangeTitle": "Alterar os IDs persistentes?",
"pidChangeConfirm": "Ao salvar, os álbuns desta biblioteca serão reagrupados e as faixas serão identificadas novamente. Um scan completo da biblioteca começará imediatamente. As marcações como favoritas, as classificações e as contagens de reprodução das faixas serão mantidas. Os favoritos e as classificações dos álbuns serão transferidos para os novos álbuns quando um álbum antigo corresponder a um novo."
}
},
"plugin": {
"name": "Plugin |||| Plugins",
"fields": {
"id": "ID",
"name": "Nome",
"description": "Descrição",
"version": "Versão",
"author": "Autor",
"website": "Website",
"permissions": "Permissões",
"enabled": "Habilitado",
"status": "Status",
"path": "Caminho",
"lastError": "Erro",
"hasError": "Erro",
"updatedAt": "Atualizado",
"createdAt": "Instalado",
"configKey": "Chave",
"configValue": "Valor",
"allUsers": "Permitir todos os usuários",
"selectedUsers": "Usuários selecionados",
"allLibraries": "Permitir todas as bibliotecas",
"selectedLibraries": "Bibliotecas selecionadas",
"allowWriteAccess": "Permitir acesso de escrita"
},
"sections": {
"status": "Status",
"info": "Informações do Plugin",
"configuration": "Configuração",
"manifest": "Manifesto",
"usersPermission": "Permissão de Usuários",
"libraryPermission": "Permissão de Bibliotecas"
},
"status": {
"enabled": "Habilitado",
"disabled": "Desabilitado"
},
"actions": {
"enable": "Habilitar",
"disable": "Desabilitar",
"disabledDueToError": "Corrija o erro antes de habilitar",
"disabledUsersRequired": "Selecione usuários antes de habilitar",
"disabledLibrariesRequired": "Selecione bibliotecas antes de habilitar",
"addConfig": "Adicionar configuração",
"rescan": "Rescanear"
},
"notifications": {
"enabled": "Plugin habilitado",
"disabled": "Plugin desabilitado",
"updated": "Plugin atualizado",
"error": "Erro ao atualizar plugin"
},
"validation": {
"invalidJson": "A configuração deve ser um JSON válido"
},
"messages": {
"configHelp": "Configure o plugin usando pares chave-valor. Deixe vazio se o plugin não precisa de configuração.",
"clickPermissions": "Clique em uma permissão para ver detalhes",
"noConfig": "Nenhuma configuração definida",
"allUsersHelp": "Quando habilitado, o plugin terá acesso a todos os usuários, incluindo os criados no futuro.",
"noUsers": "Nenhum usuário selecionado",
"permissionReason": "Motivo",
"usersRequired": "Este plugin requer acesso a informações de usuário. Selecione quais usuários o plugin pode acessar, ou habilite 'Permitir todos os usuários'.",
"allLibrariesHelp": "Quando habilitado, o plugin terá acesso a todas as bibliotecas, incluindo as criadas no futuro.",
"noLibraries": "Nenhuma biblioteca selecionada",
"librariesRequired": "Este plugin requer acesso a informações de bibliotecas. Selecione quais bibliotecas o plugin pode acessar, ou habilite 'Permitir todas as bibliotecas'.",
"requiredHosts": "Hosts necessários",
"configValidationError": "Falha na validação da configuração:",
"schemaRenderError": "Não foi possível renderizar o formulário de configuração. O schema do plugin pode estar inválido.",
"allowWriteAccessHelp": "Quando habilitado, o plugin pode modificar arquivos nos diretórios das bibliotecas. Por padrão, plugins têm acesso somente leitura.",
"idHelp": "O ID do plugin, derivado do nome do arquivo. Use-o ao referenciar este plugin em opções de configuração, como Agents."
},
"placeholders": {
"configKey": "chave",
"configValue": "valor"
}
}
},
"ra": {
"auth": {
"welcome1": "Obrigado por instalar Navidrome!",
"welcome2": "Para iniciar, crie um usuário admin",
"confirmPassword": "Confirme a senha",
"buttonCreateAdmin": "Criar Admin",
"auth_check_error": "Por favor, faça login para continuar",
"user_menu": "Perfil",
"username": "Usuário",
"password": "Senha",
"sign_in": "Entrar",
"sign_in_error": "Erro na autenticação, tente novamente.",
"logout": "Sair",
"insightsCollectionNote": "Navidrome coleta dados de uso anônimos para\najudar a melhorar o projeto. Clique [aqui] para\nsaber mais e para desativar se desejar"
},
"validation": {
"invalidChars": "Somente use letras e numeros",
"passwordDoesNotMatch": "Senha não confere",
"required": "Obrigatório",
"minLength": "Deve ser ter no mínimo %{min} caracteres",
"maxLength": "Deve ter no máximo %{max} caracteres",
"minValue": "Deve ser %{min} ou maior",
"maxValue": "Deve ser %{max} ou menor",
"number": "Deve ser um número",
"email": "Deve ser um email válido",
"oneOf": "Deve ser uma das seguintes opções: %{options}",
"regex": "Deve ter o formato específico (regexp): %{pattern}",
"unique": "Deve ser único",
"url": "URL inválida"
},
"action": {
"add_filter": "Adicionar Filtro",
"add": "Adicionar",
"back": "Voltar",
"bulk_actions": "1 item selecionado |||| %{smart_count} itens selecionados",
"cancel": "Cancelar",
"clear_input_value": "Limpar campo",
"clone": "Duplicar",
"confirm": "Confirmar",
"create": "Novo",
"delete": "Deletar",
"edit": "Editar",
"export": "Exportar",
"list": "Listar",
"refresh": "Atualizar",
"remove_filter": "Cancelar filtro",
"remove": "Remover",
"save": "Salvar",
"search": "Buscar",
"show": "Exibir",
"sort": "Ordenar",
"undo": "Desfazer",
"expand": "Expandir",
"close": "Fechar",
"open_menu": "Abrir menu",
"close_menu": "Fechar menu",
"unselect": "Deselecionar",
"skip": "Ignorar",
"bulk_actions_mobile": "1 |||| %{smart_count}",
"share": "Compartilhar",
"download": "Baixar"
},
"boolean": {
"true": "Sim",
"false": "Não"
},
"page": {
"create": "Criar %{name}",
"dashboard": "Painel de Controle",
"edit": "%{name} #%{id}",
"error": "Um erro ocorreu",
"list": "Listar %{name}",
"loading": "Carregando",
"not_found": "Não encontrado",
"show": "%{name} #%{id}",
"empty": "Ainda não há nenhum registro em %{name}",
"invite": "Gostaria de criar um novo?"
},
"input": {
"file": {
"upload_several": "Arraste alguns arquivos para fazer o upload, ou clique para selecioná-los.",
"upload_single": "Arraste o arquivo para fazer o upload, ou clique para selecioná-lo."
},
"image": {
"upload_several": "Arraste algumas imagens para fazer o upload ou clique para selecioná-las",
"upload_single": "Arraste um arquivo para upload ou clique em selecionar arquivo."
},
"references": {
"all_missing": "Não foi possível encontrar os dados das referencias.",
"many_missing": "Pelo menos uma das referências passadas não está mais disponível.",
"single_missing": "A referência passada aparenta não estar mais disponível."
},
"password": {
"toggle_visible": "Esconder senha",
"toggle_hidden": "Mostrar senha"
}
},
"message": {
"about": "Sobre",
"are_you_sure": "Tem certeza?",
"bulk_delete_content": "Você tem certeza que deseja excluir %{name}? |||| Você tem certeza que deseja excluir estes %{smart_count} itens?",
"bulk_delete_title": "Excluir %{name} |||| Excluir %{smart_count} %{name} itens",
"delete_content": "Você tem certeza que deseja excluir?",
"delete_title": "Excluir %{name} #%{id}",
"details": "Detalhes",
"error": "Um erro ocorreu e a sua requisição não pôde ser completada.",
"invalid_form": "Este formulário não está valido. Certifique-se de corrigir os erros",
"loading": "A página está carregando. Um momento, por favor",
"no": "Não",
"not_found": "Foi digitada uma URL inválida, ou o link pode estar quebrado.",
"yes": "Sim",
"unsaved_changes": "Algumas das suas mudanças não foram salvas, deseja realmente ignorá-las?"
},
"navigation": {
"no_results": "Nenhum resultado encontrado",
"no_more_results": "A página numero %{page} está fora dos limites. Tente a página anterior.",
"page_out_of_boundaries": "Página %{page} fora do limite",
"page_out_from_end": "Não é possível ir após a última página",
"page_out_from_begin": "Não é possível ir antes da primeira página",
"page_range_info": "%{offsetBegin}-%{offsetEnd} de %{total}",
"page_rows_per_page": "Resultados por página:",
"next": "Próximo",
"prev": "Anterior",
"skip_nav": "Pular para o conteúdo"
},
"notification": {
"updated": "Item atualizado com sucesso |||| %{smart_count} itens foram atualizados com sucesso",
"created": "Item criado com sucesso",
"deleted": "Item removido com sucesso! |||| %{smart_count} itens foram removidos com sucesso",
"bad_item": "Item incorreto",
"item_doesnt_exist": "Esse item não existe mais",
"http_error": "Erro na comunicação com servidor",
"data_provider_error": "Erro interno do servidor. Entre em contato",
"i18n_error": "Não foi possível carregar as traduções para o idioma especificado",
"canceled": "Ação cancelada",
"logged_out": "Sua sessão foi encerrada. Por favor, reconecte",
"new_version": "Nova versão disponível! Por favor recarregue esta janela."
},
"toggleFieldsMenu": {
"columnsToDisplay": "Colunas visíveis",
"layout": "Layout",
"grid": "Grade",
"table": "Tabela"
}
},
"message": {
"note": "ATENÇÃO",
"transcodingDisabled": "Por questão de segurança, esta tela de configuração está desabilitada. Se você quiser alterar estas configurações, reinicie o servidor com a opção %{config}",
"transcodingEnabled": "Navidrome está sendo executado com a opção %{config}. Isto permite que potencialmente se execute comandos do sistema pela interface Web. É recomendado que vc mantenha esta opção desabilitada, e só a habilite quando precisar configurar opções de Conversão",
"songsAddedToPlaylist": "Música adicionada à playlist |||| %{smart_count} músicas adicionadas à playlist",
"noPlaylistsAvailable": "Nenhuma playlist",
"delete_user_title": "Excluir usuário '%{name}'",
"delete_user_content": "Você tem certeza que deseja excluir o usuário e todos os seus dados (incluindo suas playlists e preferências)?",
"notifications_blocked": "Você bloqueou notificações para este site nas configurações do seu browser",
"notifications_not_available": "Este navegador não suporta notificações",
"lastfmLinkSuccess": "Sua conta no Last.fm foi conectada com sucesso",
"lastfmLinkFailure": "Sua conta no Last.fm não pode ser conectada",
"lastfmUnlinkSuccess": "Sua conta no Last.fm foi desconectada",
"lastfmUnlinkFailure": "Sua conta no Last.fm não pode ser desconectada",
"openIn": {
"lastfm": "Abrir em Last.fm",
"musicbrainz": "Abrir em MusicBrainz"
},
"lastfmLink": "Leia mais",
"listenBrainzLinkSuccess": "Sua conta no ListenBrainz foi conectada com sucesso",
"listenBrainzLinkFailure": "Sua conta no ListenBrainz não pode ser conectada",
"listenBrainzUnlinkSuccess": "Sua conta no ListenBrainz foi desconectada",
"listenBrainzUnlinkFailure": "Sua conta no ListenBrainz não pode ser desconectada",
"downloadOriginalFormat": "Baixar no formato original",
"shareOriginalFormat": "Compartilhar no formato original",
"shareDialogTitle": "Compartilhar %{resource} '%{name}'",
"shareBatchDialogTitle": "Compartilhar 1 %{resource} |||| Compartilhar %{smart_count} %{resource}",
"shareSuccess": "Link copiado para o clipboard : %{url}",
"shareFailure": "Erro ao copiar o link %{url} para o clipboard",
"downloadDialogTitle": "Baixar %{resource} '%{name}' (%{size})",
"shareCopyToClipboard": "Copie para o clipboard: Ctrl+C, Enter",
"remove_missing_title": "Remover arquivos ausentes",
"remove_missing_content": "Você tem certeza que deseja remover os arquivos selecionados do banco de dados? Isso removerá permanentemente qualquer referência a eles, incluindo suas contagens de reprodução e classificações.",
"remove_all_missing_title": "Remover todos os arquivos ausentes",
"remove_all_missing_content": "Você tem certeza que deseja remover todos os arquivos ausentes do banco de dados? Isso removerá permanentemente qualquer referência a eles, incluindo suas contagens de reprodução e classificações.",
"noSimilarSongsFound": "Nenhuma música semelhante encontrada",
"noTopSongsFound": "Nenhuma música mais tocada encontrada",
"startingInstantMix": "Carregando Mix Instantâneo...",
"uploadCover": "Enviar Capa",
"removeCover": "Remover Capa",
"coverUploaded": "Capa atualizada",
"coverRemoved": "Capa removida",
"coverUploadError": "Erro ao enviar capa",
"coverRemoveError": "Erro ao remover capa",
"metadataRefreshStarted": "Atualizando metadados em segundo plano",
"quickConnectApproved": "%{app} em %{device} está conectado agora",
"quickConnectInvalidCode": "Código inválido ou expirado",
"quickConnectError": "Não foi possível aprovar o código"
},
"menu": {
"library": "Biblioteca",
"settings": "Configurações",
"version": "Versão",
"theme": "Tema",
"personal": {
"name": "Pessoal",
"options": {
"theme": "Tema",
"language": "Língua",
"defaultView": "Tela inicial",
"desktop_notifications": "Notificações",
"lastfmScrobbling": "Enviar scrobbles para Last.fm",
"listenBrainzScrobbling": "Enviar scrobbles para ListenBrainz",
"replaygain": "Modo ReplayGain",
"preAmp": "PreAmp ReplayGain (dB)",
"gain": {
"none": "Desligado",
"album": "Usar ganho do álbum",
"track": "Usar ganho do faixa"
},
"lastfmNotConfigured": "A API-Key do Last.fm não está configurada"
}
},
"albumList": "Álbuns",
"about": "Info",
"playlists": "Playlists",
"sharedPlaylists": "Compartilhadas",
"librarySelector": {
"allLibraries": "Todas as Bibliotecas (%{count})",
"multipleLibraries": "%{selected} de %{total} Bibliotecas",
"selectLibraries": "Selecionar Bibliotecas",
"none": "Nenhuma"
},
"onlyFavourites": "Somente favoritas",
"quickConnect": {
"name": "Conexão Rápida",
"code": "Código",
"help": "Digite o código exibido por um aplicativo Jellyfin para conectá-lo à sua conta",
"confirm": "Conectar %{app} %{version} em %{device} à sua conta?",
"continue": "Continuar",
"approve": "Aprovar"
}
},
"player": {
"playListsText": "Fila de Execução",
"openText": "Abrir",
"closeText": "Fechar",
"notContentText": "Nenhum música",
"clickToPlayText": "Clique para tocar",
"clickToPauseText": "Clique para pausar",
"nextTrackText": "Próxima faixa",
"previousTrackText": "Faixa anterior",
"reloadText": "Recarregar",
"volumeText": "Volume",
"toggleLyricText": "Letra",
"toggleMiniModeText": "Minimizar",
"destroyText": "Destruir",
"downloadText": "Baixar",
"removeAudioListsText": "Limpar fila de execução",
"clickToDeleteText": "Clique para remover %{name}",
"emptyLyricText": "Letra não disponível",
"playModeText": {
"order": "Em ordem",
"orderLoop": "Repetir tudo",
"singleLoop": "Repetir",
"shufflePlay": "Aleatório"
}
},
"about": {
"links": {
"homepage": "Website",
"source": "Código fonte",
"featureRequests": "Solicitar funcionalidade",
"lastInsightsCollection": "Última coleta de dados",
"insights": {
"disabled": "Desligado",
"waiting": "Aguardando"
}
},
"tabs": {
"about": "Sobre",
"config": "Configuração"
},
"config": {
"configName": "Nome da Configuração",
"environmentVariable": "Variável de Ambiente",
"currentValue": "Valor Atual",
"configurationFile": "Arquivo de Configuração",
"exportToml": "Exportar Configuração (TOML)",
"exportSuccess": "Configuração exportada para o clipboard em formato TOML",
"exportFailed": "Falha ao copiar configuração",
"devFlagsHeader": "Flags de Desenvolvimento (sujeitas a mudança/remoção)",
"devFlagsComment": "Estas são configurações experimentais e podem ser removidas em versões futuras",
"downloadToml": "Baixar configuração (TOML)"
}
},
"activity": {
"title": "Atividade",
"totalScanned": "Total de pastas scaneadas",
"quickScan": "Rápido",
"fullScan": "Completo",
"serverUptime": "Uptime do servidor",
"serverDown": "DESCONECTADO",
"scanType": "Último Scan",
"status": "Erro",
"elapsedTime": "Duração",
"selectiveScan": "Seletivo"
},
"help": {
"title": "Teclas de atalho",
"hotkeys": {
"show_help": "Mostra esta janela",
"toggle_menu": "Mostra o menu lateral",
"toggle_play": "Tocar / pausar",
"prev_song": "Música anterior",
"next_song": "Próxima música",
"vol_up": "Aumenta volume",
"vol_down": "Diminui volume",
"toggle_love": "Marcar/desmarcar favorita",
"current_song": "Vai para música atual"
}
},
"nowPlaying": {
"title": "Tocando agora",
"empty": "Nada tocando",
"minutesAgo": "%{smart_count} minuto atrás |||| %{smart_count} minutos atrás"
}
}