/** * Brazilian Portuguese — translated from locales/en.js. * * Register: formal. In Brazilian Portuguese that is "você" with polite phrasing, * not "o senhor / a senhora" — the latter reads as stiff in software and is * reserved for addressing someone markedly senior. * `hub`, `node` and `GEK` are left in English: they name the CLI * (`meshbay-node`), node.toml and the docs, which are English throughout. */ export default { // Nav 'nav.toggle_menu': 'Exibir o menu', 'nav.light_mode': 'Tema claro', 'nav.dark_mode': 'Tema escuro', 'nav.logout': 'Sair', 'nav.login': 'Entrar', 'nav.minimize_tray': 'Minimizar na bandeja', 'tray.show': 'Mostrar o MeshBay', 'tray.quit': 'Sair', 'tray.start_node': 'Iniciar o nó', 'tray.stop_node': 'Parar o nó', // Sidebar 'sidebar.my_groups': 'Meus grupos', 'sidebar.no_groups': 'Nenhum grupo ainda', 'sidebar.legal': 'Informações legais', 'sidebar.discover': 'Descobrir', 'sidebar.public_groups': 'Grupos públicos', // Login 'login.title': 'Entrar', 'login.username': 'Nome de usuário', 'login.password': 'Senha', 'login.submit': 'Entrar', 'login.loading': 'Entrando...', 'login.no_account': 'Ainda não tem conta?', 'login.register_link': 'Criar uma conta', 'login.forgot': 'Esqueceu sua frase secreta?', 'login.show_password': 'Mostrar a frase secreta', 'login.hide_password': 'Ocultar a frase secreta', 'reset.title': 'Redefinir a frase secreta', 'reset.request_intro': 'Digite seu nome de usuário e o e-mail da conta. Se coincidirem, um código de redefinição é enviado para esse endereço.', 'reset.send_code': 'Enviar código', 'reset.form_intro': 'Digite o código do seu e-mail e escolha uma nova frase secreta. Se você tem sua chave de recuperação, adicione-a para também restaurar o acesso aos seus grupos.', 'reset.code': 'Código de redefinição', 'reset.recovery_key': 'Chave de recuperação (opcional)', 'reset.recovery_key_hint': 'Deixe em branco se não a tiver. Sem ela, seu acesso é restaurado, mas é preciso reingressar em cada grupo.', 'reset.new_pass': 'Nova frase secreta', 'reset.new_pass_repeat': 'Repetir a nova frase secreta', 'reset.submit': 'Redefinir a frase secreta', 'reset.working': 'Restaurando suas identidades de grupo…', 'reset.signin_restored': 'Seu acesso foi restaurado.', 'reset.groups_restored': 'Suas identidades de grupo foram restauradas em todos os nós alcançáveis.', 'reset.no_recovery': 'Suas identidades de grupo não foram restauradas. Para cada grupo, peça ao operador dele para remover sua fixação e enviar um novo código de convite, e então reingresse.', 'reset.needs_operator': 'Estes grupos ainda precisam de ação — peça a cada operador para remover sua fixação e enviar um novo código:', 'reset.go_app': 'Ir para o aplicativo', 'reset.back_to_login': 'Voltar para o login', 'reset.err_unsupported': 'A redefinição da frase secreta precisa do módulo de criptografia do navegador, que não está disponível aqui.', // Register 'register.title': 'Criar uma conta', 'register.username': 'Nome de usuário', 'register.email': 'E-mail', 'register.password': 'Frase secreta (mínimo de 12 caracteres)', 'register.confirm': 'Confirmar a senha', 'register.submit': 'Criar a conta', 'register.loading': 'Criando a conta...', 'register.has_account': 'Já tem uma conta?', 'register.login_link': 'Entrar', 'register.recovery_title': 'Guarde sua chave de recuperação', 'register.recovery_intro': 'Esta chave restaura suas identidades de grupo caso você esqueça sua frase secreta. Guarde-a em um gerenciador de senhas ou em local seguro.', 'register.recovery_copy': 'Copiar', 'register.recovery_copied': 'Copiado', 'register.recovery_warning': 'Se você perder tanto a frase secreta quanto esta chave, seus arquivos permanecem em seus nós, mas você reingressa em cada grupo com uma nova identidade.', 'register.recovery_saved': 'Guardei minha chave de recuperação em um local seguro.', 'register.recovery_continue': 'Continuar', 'register.recovery_email_opt': 'Enviar também esta chave de recuperação para o meu e-mail como backup', 'register.recovery_emailed': 'Uma cópia também foi enviada para o seu e-mail, na mesma mensagem que o seu código de verificação.', 'register.recovery_not_emailed': 'Isto não foi enviado por e-mail. Guarde agora — esta é a única vez que é mostrada.', 'register.success_title': 'Verifique seu e-mail', 'register.success_msg': 'Um código de verificação foi enviado para o seu e-mail. Digite-o abaixo para ativar sua conta.', 'register.go_login': 'Ir para o login', 'register.code_placeholder': 'Código de verificação', 'register.verify_btn': 'Verificar', 'register.verifying': 'Verificando…', 'register.verified_title': 'E-mail verificado', 'register.verified_msg': 'Sua conta está ativa. Agora você pode entrar.', 'register.resend': 'Reenviar código', 'register.resend_sent': 'Um novo código foi enviado.', 'login.pending_verification': 'Seu e-mail ainda não foi verificado. Verifique sua caixa de entrada.', 'login.verify_link': 'Verificar e-mail', 'login.invalid': "Nome de usuário ou frase secreta incorretos.", 'login.locked': "Muitas frases secretas incorretas para esta conta. Tente novamente em {minutes} min ou redefina sua frase secreta.", // Sign-in page: what MeshBay is (browser only) 'welcome.title': 'A rede que só depende de você.', 'welcome.lead': 'Suas fotos, músicas, vídeos e conversas ficam em casa, no seu próprio computador. O MeshBay permite que você aproveite tudo de qualquer lugar e compartilhe com as pessoas que escolher.', 'welcome.app_chat': 'Chat', 'welcome.app_photos': 'Fotos', 'welcome.app_media': 'Central de mídia', 'welcome.app_video': 'Player de vídeo', 'welcome.app_music': 'Player de música', 'welcome.how_title': 'Como funciona', 'welcome.step_home': 'Instale o MeshBay em um computador de casa. Seus arquivos ficam onde estão.', 'welcome.step_anywhere': 'Entre pelo celular, pelo notebook ou por qualquer navegador, onde você estiver.', 'welcome.step_share': 'Crie grupos e convide sua família e seus amigos para participar.', 'welcome.uses_title': 'O que você pode fazer com ele', 'welcome.use_chat': 'Mensagens instantâneas dentro de um grupo', 'welcome.use_photos': 'Compartilhar álbuns de fotos com a família e os amigos', 'welcome.use_media': 'Acessar de qualquer lugar a sua central de mídia, para você e sua casa, com streaming e Chromecast pelo app para desktop', 'welcome.use_apps': 'Criar seus próprios aplicativos no nó que você hospeda', 'welcome.private_title': 'Privado por natureza', 'welcome.private_body': 'Seus arquivos e mensagens viajam criptografados, direto dos seus dispositivos para o seu próprio computador. O meshbay.org só ajuda seus dispositivos a se encontrarem: seu conteúdo nunca passa por ele.', 'welcome.badge_free': 'Gratuito', 'welcome.badge_open': 'Código aberto', 'welcome.badge_no_ads': 'Sem anúncios', 'welcome.badge_no_tracking': 'Sem rastreamento', 'welcome.docs_title': 'Documentação', 'welcome.docs_source': 'Código-fonte', 'welcome.docs_repo': 'git.meshbay.org', 'welcome.docs_user': 'Docs do usuário', 'welcome.docs_quickstart': 'Início rápido', 'welcome.docs_userguide': 'Guia do usuário', 'welcome.docs_devel': 'Docs de desenvolvimento', 'welcome.docs_design': 'Arquitetura', 'welcome.docs_protocol': 'Protocolo', 'welcome.docs_api': 'API', 'welcome.download': 'Baixar (beta)', 'welcome.legal': 'Informações legais', 'register.err_mismatch': 'As senhas não coincidem', 'register.err_username_len': 'O nome de usuário deve ter pelo menos {n} caracteres.', 'register.err_min_len': { one: 'Use pelo menos {n} caractere', other: 'Use pelo menos {n} caracteres', }, 'register.err_too_weak': 'Fácil demais de adivinhar. Sua frase secreta é o que ' + 'protege suas chaves onde elas ficam guardadas — algumas palavras sem relação ' + 'entre si funcionam muito bem.', 'register.strength': 'Robustez: cerca de {bits} bits. Ela protege a cópia das suas ' + 'chaves mantida nos nodes dos quais você participa, então vale a pena caprichar.', 'captcha.required': 'Por favor, complete o captcha.', 'captcha.failed': 'Verificação do captcha falhou — tente novamente.', // Home 'home.welcome': 'Bem-vindo ao MeshBay', 'home.no_groups': 'Você ainda não participa de nenhum grupo.', 'home.browse_prefix': 'Explore os ', 'home.browse_link': 'grupos públicos', 'home.browse_suffix': ' ou peça a um administrador de grupo que o convide.', 'home.invite_only': 'Peça a um administrador de grupo que o convide.', 'home.my_groups': 'Meus grupos', // Explore 'explore.title': 'Grupos públicos', 'explore.search': 'Pesquisar grupos...', 'explore.loading': 'Carregando...', 'explore.empty': 'Nenhum grupo público disponível.', 'explore.create_group': 'Criar um grupo', 'explore.join': 'Participar', 'explore.member': 'Participando', 'explore.disabled': "This hub does not have public groups.", // Group page 'group.default_name': 'Grupo', 'group.tab_files': 'Arquivos', 'group.tab_chat': 'Conversa', 'group.tab_video': 'Vídeos', 'group.tab_music': 'Música', 'group.tab_photos': 'Fotos', 'group.tab_helloworld': 'HelloWorld', 'helloworld.greeting': 'Olá, mundo!', 'helloworld.no_directory': 'Nenhuma pasta escolhida. Escolha uma nas configurações.', 'helloworld.counted': '{n} arquivo(s)', 'settings_app.helloworld_directory_label': 'Pasta', 'settings_app.helloworld_directory_hint': 'A pasta que este aplicativo de referência lista. Existe para mostrar que adicionar um aplicativo não exige nada além de seus dois arquivos.', 'group.tab_members': 'Membros', 'group.tab_settings': "Configurações", 'members.danger_leave_hint': "Você perderá o acesso aos arquivos e ao chat deste grupo.", 'members.uploads_title': "Envios", 'members.uploads_on': "Os membros podem adicionar arquivos", 'members.uploads_off': "Somente você pode adicionar arquivos", 'members.uploads_disable': "Desativar", 'members.uploads_enable': "Ativar", 'members.uploads_hint': "Vale para todos menos você. O nó recusa o envio por conta própria: não se trata de esconder um botão.", 'members.apps_title': "Aplicativos", 'members.apps_hint': "Quais partes deste grupo os membros veem. Pelo menos um deve permanecer ativado.", 'members.apps_need_one': "Pelo menos um aplicativo deve permanecer ativado.", 'members.danger_delete_hint': "O grupo desaparece para todos os membros. Não há como desfazer.", 'group.filter': 'Filtrar arquivos...', 'group.refresh_index': 'Atualizar a lista', 'group.col_name': 'Nome', 'group.col_size': 'Tamanho', 'group.col_type': 'Tipo', 'group.col_date': 'Data', 'group.empty_filter': 'Nenhum arquivo corresponde ao filtro', 'group.empty_dir': 'Esta pasta está vazia', 'group.download': 'Baixar', 'group.play': 'Reproduzir', 'group.offline_title': 'Nenhum node está on-line para este grupo no momento.', 'group.offline_hint': 'Os arquivos aparecerão quando um node que hospeda este grupo ' + 'se conectar.', 'group.upload': 'Enviar', 'group.drop_here': 'Solte para enviar para {dir}', 'group.drop_not_here': 'Só é possível soltar arquivos em uma pasta com permissão de escrita.', 'group.drop_conflict': 'Envio cancelado — já existe nesta pasta: {names}. Renomeie ou remova primeiro.', 'group.drop_invalid': 'Envio cancelado — o nó não pode armazenar estes nomes: {names}', 'group.drop_unreadable': 'Envio cancelado — não foi possível ler os itens soltos.', 'group.drop_mkdir_failed': 'Envio cancelado — não foi possível criar uma pasta ({detail}).', 'group.mkdir': 'Nova pasta', 'group.mkdir_prompt': 'Nome da nova pasta', 'group.mkdir_offline': 'Sem conexão com o nó.', 'group.download_offline': 'Sem conexão com o nó — o download não pode começar. Ele reconecta sozinho; tente de novo em instantes.', 'group.link_unknown': "Este link aponta para um grupo do qual você não é membro, ou que não tem mais esse nome.", 'group.link_path_unknown': "Não há nada em {path} neste grupo — o arquivo pode ter sido movido, renomeado ou excluído.", 'link.copy': "Copiar link", 'link.copied': "Link copiado", 'link.copy_failed': "Não foi possível copiar — o link é {url}", 'group.download_write_stalled': 'O arquivo parou de ser gravado no disco ({seconds}s sem progresso). O download foi interrompido em vez de ficar travado; tente de novo.', 'device.add_title': 'This browser is not linked to this node yet', 'device.add_hint': 'Your account is known here, but this browser holds a different key. Approve it from a device already linked — no operator needed.', 'device.add_btn': 'Get a linking code', 'device.add_show': 'Type this code into a device already linked to this node, within the hour:', 'device.mine_title': 'Your devices on this node', 'device.mine_hint': 'Each browser or client you use here holds its own key. They are separate from your devices on other nodes.', 'device.mine_empty': 'No device is linked here yet.', 'device.this_one': 'this one', 'device.revoke': 'Remove', 'device.revoke_confirm': 'Remove this device? It will lose access to this node until it is linked again.', 'device.approve_hint': 'Linking a new device? Enter the code it is showing.', 'device.approve_btn': 'Approve', 'device.approved': 'Device linked.', 'group.root_unavailable': '(indisponível — a unidade está desconectada)', 'group.root_plug': 'Conectar', 'group.root_eject': 'Ejetar', 'group.root_writable': 'Leitura/Escrita', 'group.root_ejected': '(ejetado)', 'group.view': 'Visualizar', 'group.delete': 'Excluir', 'group.delete_confirm': 'Excluir {name}?', 'group.delete_group': 'Excluir o grupo', 'group.delete_group_confirm': 'Excluir "{name}" definitivamente e remover todos os ' + 'membros? Os arquivos que estão no node são preservados.', 'group.err_transport': 'Módulo de transporte não carregado', // Status 'status.idle': 'Ocioso', 'status.discovering': 'Procurando nodes...', 'status.connecting': 'Conectando via WebRTC...', 'status.connecting_short': 'Conectando…', 'status.fetching': 'Obtendo o índice...', 'status.files': { one: '{n} arquivo', other: '{n} arquivos', }, 'status.offline': 'Nenhum node on-line', 'status.error': 'Falha na conexão', // Chat 'chat.empty': 'Ainda não há mensagens. Comece a conversa!', 'chat.placeholder': 'Escreva uma mensagem...', 'chat.send': 'Enviar', 'chat.attach': 'Anexar arquivo', 'chat.attach_read_only': 'Nenhum diretório compartilhado gravável — anexos desativados', // Video player 'video.loading': 'Carregando {name}...', 'video.buffering': 'Armazenando em buffer...', 'video.resumed_at': "Retomado em {time}", 'video.from_start': "Começar do início", 'video.audio_track': 'Faixa de áudio', 'video.audio_track_n': 'Faixa {n}', 'video.subtitles': 'Legendas', 'video.subtitles_off': 'Nenhuma', 'video.subtitle_track_n': 'Faixa {n}', 'video.subtitles_forced': 'forçadas (apenas letreiros)', 'video.subtitles_sdh': 'para surdos', 'video.err_subtitle': 'Não foi possível carregar esta faixa de legendas', 'video.close': 'Fechar (Esc)', 'preview.pdf_fallback': 'Este navegador não exibirá o PDF na própria página. Baixe ' + 'o arquivo — de todo modo ele foi descriptografado aqui.', 'preview.too_large': 'Este arquivo tem {size}, mais do que esta página consegue manter na memória ({limit}). Baixe-o em vez disso — um download é gravado direto no disco.', 'download.too_large_for_memory': '"{name}" tem {size}. Este navegador só consegue salvar um arquivo desse tamanho gravando-o direto no disco, e aqui ele não tem como — precisaria manter o arquivo inteiro na memória. Recarregue a página e tente novamente; se não resolver, use o aplicativo para computador.', 'group.upload_indexing': 'indexando…', 'video.err_transport': 'Transporte não conectado', 'video.err_mse': 'Codec sem suporte para transmissão: {codec}', 'video.err_no_mse': 'Este navegador não consegue transmitir vídeo (um iPhone precisa do iOS 17.1 ou mais recente)', 'video.mode_poster': 'Pôsteres', 'video.mode_flat': 'Lista simples', 'video.filter_all': 'All', 'video.filter_movies': 'Movies', 'video.filter_series': 'Series', 'pager.range': '{from}–{to} de {total}', 'pager.previous': 'Página anterior', 'pager.next': 'Próxima página', 'video.empty': 'Nenhum vídeo encontrado.', 'video.no_root_configured': 'Ainda não há uma pasta raiz de Vídeos definida para este grupo — um operador pode escolher uma em Configurações.', 'music.no_root_configured': 'Ainda não há uma pasta raiz de Música definida para este grupo — um operador pode escolher uma em Configurações.', 'video.director': 'Diretor', 'video.specials': 'Especiais', 'video.season_n': 'Temporada {n}', 'video.episode_n': 'Episódio {n}', 'video.n_episodes': { one: '{n} episódio', other: '{n} episódios', }, 'video.fix_match': 'Corrigir correspondência…', 'video.search_title': 'Corrigir a correspondência do TMDB', 'video.search_placeholder': 'Pesquisar no TMDB…', 'video.search_button': 'Pesquisar', 'video.search_no_results': 'Nenhuma correspondência encontrada.', 'video.search_apply_hint': 'Aplica-se a todos os arquivos atualmente agrupados sob este título.', 'video.search_apply_hint_movie': 'Aplica-se somente a este arquivo.', 'video.source_file': 'Arquivo: {name}', 'video.no_match': 'Sem correspondência confiável no TMDB — exibindo o nome do arquivo.', 'video.rematch_one': 'Combinar de novo', 'video.read_more': 'Ler mais', 'video.read_less': 'Mostrar menos', // Música 'music.mode_grid': 'Álbuns', 'music.mode_flat': 'Lista simples', 'music.empty': 'Nenhuma música encontrada.', 'music.unknown_album': 'Álbum desconhecido', 'music.unknown_artist': 'Artista desconhecido', 'music.various': 'Diversos', 'music.play_all': 'Reproduzir tudo', 'music.menu_more': 'Mais…', 'music.menu_play': 'Reproduzir', 'music.menu_play_next': 'Reproduzir em seguida', 'music.menu_enqueue': 'Adicionar à fila', 'music.n_tracks': { one: '{n} faixa', other: '{n} faixas', }, 'music.err_transport': 'Transporte não conectado', 'music.err_playback': 'Erro de reprodução', 'music.err_transcode': 'Falha na conversão de formato', 'music.player_play': 'Reproduzir', 'music.player_pause': 'Pausar', 'music.player_prev': 'Anterior', 'music.player_next': 'Próxima', 'music.player_shuffle': 'Aleatório', 'music.player_repeat_off': 'Repetição desativada', 'music.player_repeat_all': 'Repetir tudo', 'music.player_repeat_one': 'Repetir faixa', 'music.player_volume': 'Volume', 'music.player_close': 'Fechar player', 'playlists.menu': 'Playlists', 'playlists.load': 'Carregar uma playlist', 'playlists.create': 'Nova playlist…', 'playlists.delete': 'Excluir uma playlist', 'playlists.remove_track': 'Remover uma faixa', 'playlists.sync_now': 'Sincronizar agora', 'playlists.add_to': 'Adicionar à playlist', 'playlists.favorites': 'Favoritos', 'playlists.none_yet': 'Nenhuma playlist ainda', 'playlists.empty_playlist': 'Esta playlist está vazia', 'playlists.added': '{n} adicionadas', 'playlists.already_there': 'Já está nessa playlist', 'playlists.name_placeholder': 'Nome da playlist', 'playlists.err_duplicate': 'Já existe uma playlist com esse nome', 'playlists.confirm_delete': 'Excluir a playlist "{name}"? Isso não pode ser desfeito.', 'playlists.deleted': '"{name}" excluída', 'playlists.synced': 'Playlists sincronizadas', 'playlists.sync_failed': 'Não foi possível sincronizar', 'playlists.err_no_key': 'Saia e entre com sua senha uma vez para sincronizar as playlists entre dispositivos.', 'playlists.err_too_large': '"{name}" é grande demais para sincronizar com seus outros dispositivos. Divida-a em playlists de cerca de {n} faixas.', 'playlists.track_removed': 'Faixa removida', 'playlists.save_queue': 'Salvar a fila como playlist…', 'playlists.cancel': 'Cancelar', 'playlists.save': 'Salvar', 'music.player_queue': 'Fila atual', 'music.queue_title': 'Tocando agora', // Photos 'photo.empty': 'Nenhuma foto encontrada.', 'photo.no_roots_configured': 'Ainda não há pastas raiz de Fotos definidas para este grupo — um operador pode escolher algumas em Configurações.', 'photo.root_album': '(nível superior)', 'photo.n_photos': { one: '{n} foto', other: '{n} fotos', }, 'photo.back': 'Voltar', 'photo.prev': 'Anterior (←)', 'photo.next': 'Próxima (→)', 'photo.zip_album': 'Baixar álbum como zip', 'photo.slideshow': 'Apresentação de slides', 'photo.slideshow_stop': 'Parar a apresentação', 'photo.zoom_in': 'Aumentar zoom', 'photo.zoom_out': 'Diminuir zoom', 'photo.zoom_fit_title': 'Ajustar à janela', 'photo.zoom_fit_label': 'Ajustar', 'photo.zoom_100': 'Tamanho real (100%)', // LAN cast 'cast.start': 'Transmitir para dispositivo', 'cast.stop': 'Parar transmissão', 'cast.copy_url': 'Copiar URL do stream', 'cast.copied': 'URL copiada', 'cast.scanning': 'Procurando dispositivos…', 'cast.no_devices': 'Nenhum dispositivo encontrado', 'cast.casting_to': 'Transmitindo para', 'cast.seek': 'Posição no filme', 'cast.waiting': 'Aguardando a TV…', 'cast.back30': 'Voltar 30 segundos', 'cast.fwd30': 'Avançar 30 segundos', 'cast.play': 'Reproduzir', 'cast.pause': 'Pausar', // Settings 'settings.title': 'Configurações', 'settings.coming_soon': 'Em breve.', 'settings.downloads': 'Downloads', 'settings.dl_auto': 'Salvar automaticamente', 'settings.dl_auto_hint': 'Os arquivos vão direto para a pasta escolhida abaixo, sem ' + 'nenhuma caixa de diálogo. Baixar vinte arquivos coloca vinte arquivos lá.', 'settings.dl_ask': 'Perguntar sempre', 'settings.dl_ask_hint': 'Uma caixa "Salvar como" por arquivo — uma para cada ' + 'arquivo, inclusive quando você baixa uma seleção.', 'settings.dl_folder': 'Pasta: {name}', 'settings.dl_no_folder': 'Nenhuma pasta escolhida — os downloads vão para onde o ' + 'seu navegador os colocar, e não podem ser pausados', 'settings.dl_choose': 'Escolher pasta', 'settings.dl_change': 'Alterar', 'settings.dl_forget': 'Esquecer', 'settings.profile': 'Perfil', 'settings.username': 'Nome de usuário', 'settings.email': 'Email', 'settings.email_save': 'Salvar', 'settings.email_saved': 'E-mail atualizado', 'settings.email_code_sent': 'Um código de verificação foi enviado para o seu novo endereço de e-mail.', 'settings.email_code_placeholder': 'Código de verificação', 'settings.email_verify_btn': 'Verificar', 'settings.email_verifying': 'Verificando…', 'settings.email_verified': 'Endereço de e-mail alterado com sucesso.', 'settings.notif_global_disable': 'Desativar todas as notificações', 'settings.notif_global_hint': 'Quando ativado, nenhuma notificação é criada para nenhum grupo.', 'settings.push_label': 'Notificações neste telefone', 'settings.push_off': 'Desativadas. Ative para saber de novas mensagens e convites com o MeshBay fechado.', 'settings.push_pending': 'Aguardando a resposta do distribuidor…', 'settings.push_blocked': 'O Android está bloqueando as notificações do MeshBay: permita-as nas configurações do sistema.', 'settings.push_ready': 'Ativadas. Novas notificações chegam a este telefone pelo distribuidor, criptografadas para que ele não possa lê-las.', 'settings.push_poll': 'Ativadas. Este telefone verifica novas notificações a cada quinze minutos, aproximadamente. Para recebê-las na hora, você pode instalar um app distribuidor UnifiedPush como o ntfy (opcional).', 'settings.push_global_off': 'Nada é enviado enquanto todas as notificações estiverem desativadas.', 'push.channel_chat': 'Mensagens', 'push.channel_other': 'Convites e conta', 'settings.defaults': 'Padrões', 'settings.default_tab': 'Default tab', 'settings.default_tab_hint': 'Which tab opens first when you enter a group.', 'settings.media_page_size': 'Itens por página em Vídeos e Música', 'settings.media_page_size_hint': 'Quantos pôsteres ou álbuns são exibidos de uma vez; as setas na barra de ferramentas passam para o próximo lote.', 'settings.music_keep_screen_on': 'Keep screen on during music playback', 'settings.music_keep_screen_on_hint': 'Prevents the phone from locking on its own while a track is playing.', 'settings.node_pins': 'Identidades dos nodes', 'settings.node_pins_hint': 'A chave de identidade de cada node é memorizada na ' + 'primeira conexão. Se ela mudar, a conexão é recusada — o que só é esperado ' + 'quando um operador reinstala um node. Confirme com ele antes de limpar.', 'settings.node_pins_count': { one: '{n} fixada', other: '{n} fixadas', }, 'settings.node_pins_clear': 'Limpar as identidades fixadas', 'settings.passphrase': 'Frase secreta', 'settings.passphrase_hint': 'Altera a frase secreta desta conta. Suas chaves de identidade são recriptografadas em cada grupo cujo nó esteja on-line; um grupo cujo nó esteja off-line terá de ser reingressado depois.', 'settings.passphrase_change': 'Alterar a frase secreta', 'settings.passphrase_current': 'Frase secreta atual', 'settings.passphrase_new': 'Nova frase secreta', 'settings.passphrase_new_repeat': 'Repetir a nova frase secreta', 'settings.continue': 'Continuar', 'settings.done': 'Concluído', 'settings.passphrase_confirm_intro': 'Suas chaves de identidade serão recriptografadas agora em cada grupo cujo nó possa ser alcançado:', 'settings.passphrase_reachable': 'Atualizado agora', 'settings.passphrase_unreachable': 'Não pode ser alcançado', 'settings.passphrase_fallback_note': 'Para um grupo que não pode ser alcançado, peça ao operador dele para remover sua fixação e enviar um novo código de convite, e então reingresse. Seus arquivos e mensagens não são perdidos.', 'settings.passphrase_confirm_btn': 'Alterar', 'settings.passphrase_working': 'Recriptografando suas chaves…', 'settings.passphrase_done': 'Frase secreta alterada.', 'settings.passphrase_needs_operator': 'Estes grupos ainda precisam de ação — peça a cada operador para remover sua fixação e enviar um novo código:', 'settings.pw_too_short': 'A nova frase secreta deve ter pelo menos 12 caracteres.', 'settings.pw_mismatch': 'As duas novas frases secretas não coincidem.', 'settings.pw_same': 'A nova frase secreta deve ser diferente da atual.', 'settings.pw_wrong_current': 'A frase secreta atual não está correta. Nada foi alterado.', 'settings.recovery': 'Chave de recuperação', 'settings.recovery_hint': 'Adiciona a cada grupo uma cópia da sua identidade criptografada com a sua chave de recuperação. Faça isso uma vez em cada navegador que usar; sem ela, uma frase secreta perdida obriga a reingressar em cada grupo manualmente.', 'settings.recovery_loaded': 'Carregada neste navegador — grupos novos ficam cobertos automaticamente.', 'settings.recovery_open': 'Inserir a chave de recuperação', 'settings.recovery_input_ph': 'Cole a sua chave de recuperação', 'settings.recovery_submit': 'Adicionar cópias de backup', 'settings.recovery_working': 'Atualizando os seus grupos…', 'settings.recovery_done': 'Os seus grupos agora têm uma cópia de recuperação.', 'settings.recovery_partial': 'Não foi possível alcançar estes grupos. Abra-os mais tarde, ou execute isto de novo:', 'settings.recovery_need_relogin': 'Saia e entre novamente, depois tente de novo.', 'settings.danger': 'Excluir a conta', 'settings.sessions_heading': 'Sessões', 'settings.sign_out_everywhere': 'Sair em todos os lugares', 'settings.sign_out_everywhere_hint': 'Encerra todas as sessões da sua conta, inclusive esta: útil se você ficou conectado em um computador que não é seu. Um aplicativo desktop entra de novo com a chave do dispositivo até você remover esse dispositivo.', 'settings.sign_out_everywhere_confirm': 'Sair de todos os navegadores e aplicativos, inclusive este?', 'settings.delete_hint': 'Remove sua conta, suas participações em grupos e suas ' + 'notificações do hub, e libera seu nome de usuário. Não alcança o que está nos ' + 'nodes: os arquivos que você enviou permanecem onde o operador deles os guarda, e ' + 'cada node mantém a identidade que fixou para você até que o operador a remova. ' + 'Os registros de conexão são guardados por um ano, como a lei exige.', 'settings.delete_account': 'Excluir minha conta', 'settings.delete_confirm': 'Digite sua frase secreta para confirmar. Esta ação não ' + 'pode ser desfeita.', 'settings.delete_confirm_btn': 'Excluir definitivamente', 'settings.cancel': 'Cancelar', 'settings.appearance': 'Aparência', 'settings.theme': 'Tema', 'settings.theme_light': 'Claro', 'settings.theme_dark': 'Escuro', 'settings.theme_system': 'Sistema', 'settings.language': 'Idioma', 'settings.about': 'Sobre', 'firstrun.title': 'Which hub?', 'firstrun.hint': 'A hub holds your account and introduces you to nodes. It never sees your files, your messages or your keys.', 'firstrun.btn': 'Continue', 'firstrun.checking': 'Checking…', 'device.this_device': 'This device', 'settings.keys_heading': 'Keys on this device', 'settings.hub_heading': 'Hub', 'settings.hub_current': 'Currently', 'settings.hub_hint': 'The hub this application connects to. Changing it signs you out: your account stays on this hub.', 'settings.hub_change': 'Change', 'settings.keys_where': 'Protected by', 'settings.keys_unprotected': 'No system keyring is running, so your keys are encrypted with a key that is not a secret. Anyone who can read this machine’s files can read them. Start a keyring, or treat this device as untrusted.', 'settings.keys_unavailable': 'This system offers no key storage at all, so this device cannot be remembered — you will be asked for your passphrase each time. That is the safe outcome: nothing was stored unprotected.', 'settings.version': 'Versão', 'settings.protocol': 'Protocolo', 'settings.role': 'Função', 'settings.groups': 'Notificações de grupo', 'settings.notifications': 'Notificações', 'settings.node_key': 'Vincular um node', 'settings.node_key_desc': 'Se você opera um node MeshBay, cole aqui a chave pública ' + 'Ed25519 dele para vinculá-lo à sua conta. Execute `meshbay-node status` na ' + 'máquina que hospeda o node para ler a chave, ou copie-a em ' + 'Node → Overview no cliente desktop.', 'settings.node_key_placeholder': 'Cole a chave pública Ed25519 do node (base64)', 'settings.node_key_submit': 'Vincular o node', 'settings.node_key_success': 'Node vinculado com sucesso', 'settings.node_key_unlink': "Desvincular", 'settings.node_key_unlink_confirm': "Desvincular o node da sua conta? Ele deixará de servir seus grupos até que um node seja vinculado novamente.", 'settings.node_key_unlinked': "Node desvinculado", 'settings.node_key_current': 'Chave do node vinculado', // Sidebar 'sidebar.create_group': 'Criar um grupo', 'sidebar.settings': 'Configurações', 'sidebar.admin': 'Administração', // User menu 'usermenu.language': 'Idioma', 'usermenu.settings': 'Configurações', 'usermenu.theme_light': 'Tema claro', 'usermenu.theme_dark': 'Tema escuro', 'usermenu.logout': 'Sair', // Admin panel 'admin.title': 'Administração', 'admin.tab_stats': 'Estatísticas', 'admin.tab_users': 'Usuários', 'admin.tab_groups': 'Grupos', 'admin.tab_nodes': 'Nodes', 'admin.tab_logs': 'Registros', 'admin.col_observed_ip': 'Visto de', 'admin.col_hint': 'Endereço anunciado', 'admin.col_last_seen': 'Último anúncio', 'admin.node_online': 'on-line', 'admin.node_offline': 'off-line', 'admin.no_nodes': 'Nenhum node registrado', 'admin.nodes_hint': '"Visto de" é o endereço de onde o anúncio chegou, em uma ' + 'requisição assinada com a chave do node — é esse que serve para responder a uma ' + 'requisição judicial. O endereço anunciado é o que o node acredita ser o seu, ' + 'aprendido de um servidor STUN e enviado a nós; serve para alcançar o node e não ' + 'prova coisa alguma.', 'admin.tab_blocklist': 'Lista de bloqueio', 'admin.tab_general': "General", 'admin.general_groups_heading': "Groups", 'admin.allow_public_groups_label': "Allow members to create public groups", 'admin.allow_public_groups_hint': "When off, new groups can only be private and invite-only. Existing public groups are left as they are — suspend them one by one from the Groups tab.", 'admin.mail_heading': "Correio de saída", 'admin.mail_hint': "O que este hub envia, e quanto. Os dois que importam são o orçamento por hora, que nenhum número de contas aumenta, e o limite diário por destinatário, que é o que alguém sendo inundado realmente sente.", 'admin.mail_this_hour': "Enviados nesta hora", 'admin.mail_remaining': "Restam {general} para cadastros e trocas de endereço, {recovery} para redefinições de senha e convites.", 'admin.mail_hourly_budget': "Mensagens por hora (instância inteira)", 'admin.mail_hourly_reserved_for_recovery': "Destas, reservadas para redefinições e convites", 'admin.mail_destination_daily_cap': "Mensagens por dia para um mesmo destinatário", 'admin.mail_destination_cooldown_seconds': "Segundos entre mensagens ao mesmo destinatário", 'admin.mail_invite_link_daily_cap': 'E-mails de link de convite por dia por conta', 'admin.mail_verification_resend_cooldown': "Segundos entre dois códigos de cadastro", 'admin.mail_reset_cooldown': "Segundos entre dois códigos de redefinição", 'admin.mail_email_change_cooldown': "Segundos até uma conta poder propor outro endereço", 'admin.mail_save': "Salvar limites de correio", 'admin.mail_reset_defaults': "Restaurar padrões", 'admin.login_heading': "Login", 'admin.login_hint': "Após este número de frases secretas incorretas para um mesmo nome de usuário, o login com frase secreta é recusado pelo tempo definido. Sessões já abertas e dispositivos registrados continuam funcionando, e redefinir a frase secreta encerra o bloqueio. 0 desativa.", 'admin.session_heading': 'Sessões', 'admin.session_hint': 'Um navegador encerra a sessão após o primeiro número de horas sem interação e sem reprodução em andamento; o aplicativo desktop não. Uma sessão sem uso pelo segundo número deixa de ser renovada, e nenhuma dura além do terceiro.', 'admin.session_browser_idle_hours': 'Saída do navegador após inatividade (horas)', 'admin.session_refresh_idle_hours': 'Sessão sem uso expira após (horas)', 'admin.session_max_hours': 'Duração máxima da sessão (horas)', 'admin.session_save': 'Salvar configurações de sessão', 'admin.login_max_failures': "Frases incorretas antes do bloqueio", 'admin.login_lockout_minutes': "Duração do bloqueio (minutos)", 'admin.login_save': "Salvar limites de login", 'admin.mail_state_is_in_stats': "O consumo da hora atual aparece em Estatísticas.", 'admin.mail_state_hint': "Redefinições e convites podem gastar todo o orçamento; cadastros e trocas de endereço não podem usar a parte reservada. Os administradores são avisados uma vez por hora quando qualquer um dos limites é atingido.", 'admin.mail_left_signups': "Restante para cadastros", 'admin.mail_left_recovery': "Restante para redefinições e convites", 'admin.mail_recipients': "Destinatários contados hoje", 'admin.mail_alert_all': "Este hub parou de enviar e-mail nesta hora. Redefinições e convites também são recusados.", 'admin.mail_alert_general': "A parte para cadastros e trocas de endereço acabou nesta hora. Redefinições e convites continuam saindo.", 'admin.settings_readonly': "Only an admin can change these settings.", // Admin stats 'admin.stat_users': 'Usuários', 'admin.stat_groups': 'Grupos', 'admin.stat_nodes': 'Nodes', 'admin.stat_online': 'Nodes on-line', // Admin users 'admin.users_search': 'Pesquisar usuários...', 'admin.col_username': 'Nome de usuário', 'admin.col_role': 'Função', 'admin.col_status': 'Status', 'admin.col_created': 'Criação', 'admin.col_actions': 'Ações', 'admin.col_email': 'E-mail', 'admin.col_groups': 'Grupos', 'admin.no_users': 'Nenhum usuário encontrado', 'admin.btn_suspend': 'Suspender', 'admin.btn_unsuspend': 'Reativar', 'admin.btn_revoke': "Revoke", 'admin.revoke_group_confirm': "Revoke the group \"{group}\"? This pushes a signed revocation to every node hosting it and cannot be undone from here. Suspend it instead if you only need to pause it.", 'admin.btn_details': 'Detalhes', 'admin.btn_delete': 'Excluir', 'admin.delete_confirm': 'Excluir a conta "{user}" e todos os grupos dela? Esta ação não pode ser desfeita. ' + 'Os arquivos que essa pessoa enviou permanecem nos nodes que os hospedam, e cada ' + 'node mantém a identidade que fixou até que o operador dele a remova. Suspender é ' + 'a opção reversível.', 'admin.user_detail': 'Detalhes do usuário', 'admin.btn_close': 'Fechar', 'admin.self_note': '(você)', // Admin groups 'admin.col_name': 'Nome', 'admin.col_visibility': 'Visibilidade', 'admin.col_members': 'Membros', 'admin.no_groups': 'Nenhum grupo encontrado', // Admin logs 'admin.col_time': 'Horário', 'admin.col_event': 'Evento', 'admin.col_user': 'Usuário', 'admin.col_ip': 'IP', 'admin.col_detail': 'Detalhe', 'admin.filter_all': 'Todos os eventos', 'admin.no_logs': 'Nenhum registro encontrado', 'admin.btn_load_more': 'Carregar mais', // Admin blocklist 'admin.col_hash': 'Hash', 'admin.col_reason': 'Motivo', 'admin.col_date': 'Data', 'admin.col_added_by': 'Adicionado por', 'admin.no_blocked': 'Nenhum hash bloqueado', 'admin.add_hash': 'Adicionar um hash à lista de bloqueio', 'admin.hash_placeholder': 'hash blake3 (64 caracteres hexadecimais)', 'admin.reason_placeholder': 'Motivo', 'admin.btn_block': 'Bloquear', 'admin.btn_unblock': 'Desbloquear', // Notifications // Create group 'create_group.title': 'Criar um grupo', 'create_group.name': 'Nome do grupo', 'create_group.name_placeholder': 'ex.: Fotos da família, Arquivos do projeto...', 'create_group.join_policy': 'Política de entrada', 'create_group.invite': 'Somente por convite', 'create_group.invite_desc': "Os membros precisam ser convidados por um administrador. O grupo não aparece na lista pública.", 'create_group.open': 'Aberto (qualquer pessoa pode entrar)', 'create_group.open_desc': "Aparece nos grupos públicos — qualquer pessoa pode encontrá-lo e entrar sem aprovação.", 'create_group.description': 'Descrição', 'create_group.description_hint': 'Sobre o que é este grupo? (opcional)', 'create_group.submit': 'Criar', 'create_group.hint': 'Um grupo precisa de um node para hospedar os arquivos. Você ' + 'pode criar o grupo agora e conectar um node depois.', 'create_group.creating': 'Criando...', // Members 'members.col_role': 'Função', 'members.group_role': 'Função no grupo', 'members.admin': 'Administrador', 'members.group_admin': 'Administrador do grupo', 'members.owner': 'Proprietário', 'members.member': 'Membro', 'members.invite_title': 'Convidar um membro', 'members.username_placeholder': 'Nome de usuário', 'members.invite_btn': 'Convidar', 'members.invite_needs_pairing': 'Os convites são assinados com a chave que este node ' + 'fixou para o seu navegador, então faça o pareamento abaixo antes de convidar ' + 'alguém.', 'members.invite_ask_operator': 'Só o operador do node que hospeda este grupo pode ' + 'convidar, a partir de um navegador pareado com ele.', 'members.remove': 'Remover', 'members.remove_confirm': 'Remover {user} deste grupo? A conta dessa pessoa, os ' + 'outros grupos dela e os arquivos que ela enviou não são afetados.', 'members.remove_hint': 'Remover alguém retira a participação dessa pessoa e faz o ' + 'node parar de entregar a ela a chave do grupo. Não exclui a conta dela, e não ' + 'recupera a chave que ela já tem em mãos — rotacione a chave no node ' + '(meshbay-node gek-init) se isso importar.', 'members.pair_title': 'Parear este navegador com o seu node', 'members.pair_hint': 'O seu node só aceita ações de operador — convites, exclusão de ' + 'arquivos — de um navegador com o qual foi pareado. Execute ' + '`meshbay-node operator pair` no node e digite o código aqui. O código nunca ' + 'passa pelo hub.', 'members.pair_btn': 'Parear', 'members.pair_success': 'Este navegador agora está pareado com o node.', 'members.invite_code_ready': 'Código de convite para {user}:', 'members.invite_email_sent': 'Um e-mail com o código foi enviado a este membro.', 'members.invite_email_failed': 'Não foi possível enviar o e-mail — compartilhe o código manualmente.', 'members.invite_email_opt': 'Enviar o convite por e-mail (pode cair no spam)', 'members.link_title': "Convidar por link", 'members.link_hint': "Para alguém que talvez ainda não tenha conta. Envie como preferir — aplicativo de mensagens, SMS. O link funciona uma vez, por sete dias, para quem abrir primeiro.", 'members.link_email_placeholder': "Endereço de e-mail (opcional)", 'members.link_btn': "Criar link", 'members.link_ready': "Link de convite — válido por 7 dias, uso único:", 'members.link_copy': "Copiar", 'members.link_copied': "Copiado", 'members.link_email_sent': "O link foi enviado por e-mail.", 'members.link_email_refused': "Não foi possível enviar o e-mail — compartilhe o link você mesmo.", 'members.links_pending': "Links de convite", 'members.link_status_expired': "expirado", 'members.link_expires': "expira em {date}", 'members.link_cancel': "Cancelar", 'members.link_share': "Compartilhar", 'members.link_share_title': "Convite", 'members.link_unlabelled': "link criado em {date}", 'invite.title': "Você foi convidado", 'invite.none': "Não há convite aguardando nesta aba. Abra novamente o link que recebeu.", 'invite.signed_out': "Alguém convidou você para um grupo neste hub. Crie uma conta, ou entre se já tiver uma.", 'invite.register': "Criar uma conta", 'invite.signin': "Entrar", 'invite.confirm': "{inviter} convida você para participar de {group}.", 'invite.join': "Participar", 'invite.ignore': "Ignorar", 'invite.open': "Abrir o grupo", 'invite.already_member': "Você já é membro de {group}.", 'invite.invalid': "Este convite não é mais válido: foi usado, cancelado ou expirou. Peça um novo.", 'invite.joining': "Entrando…", 'invite.after_register': "Entre para participar do grupo para o qual foi convidado.", 'invite.paste_title': "Participar com um link de convite", 'invite.paste_placeholder': "Cole o link aqui", 'invite.paste_btn': "Continuar", 'invite.paste_invalid': "Isso não é um link de convite.", 'invite.paste_other_hub': "Este convite é para outro hub.", 'group.link_spent': "Este link de convite não é mais válido na máquina que hospeda o grupo. Peça um novo.", 'members.invite_code_hint': 'Você também pode compartilhar este código por outro canal (ex: SMS). ' + 'O código funciona uma única vez e nunca passa pelo hub.', 'transfers.title': 'Transferências', 'transfers.clear': 'Limpar as concluídas', 'transfers.cancel': 'Cancelar', 'transfers.open': 'Abrir', 'transfers.done': 'Concluída', 'transfers.cancelled': 'Cancelada', 'transfers.preparing': 'Preparando…', 'transfers.waiting_own_slots': 'Aguardando — seus espaços estão ocupados', 'transfers.waiting_node': 'Aguardando — {n} na frente', 'transfers.summary': '{running} em andamento · {waiting} aguardando', 'transfers.group_running': 'Em andamento', 'transfers.group_waiting': 'Aguardando', 'transfers.group_paused': 'Pausados', 'transfers.group_finished': 'Concluídos', 'transfers.cancel_one': 'Cancelar {name}', 'transfers.pause': 'Pausar', 'transfers.resume': 'Retomar', 'transfers.paused': 'Pausado', 'transfers.not_pausable': 'Não pode ser pausado — escolha uma pasta de downloads em Configurações', 'transfers.pause_one': 'Pausar {name}', 'transfers.resume_one': 'Retomar {name}', 'transfers.eta_seconds': 'faltam {n} s', 'transfers.eta_minutes': 'faltam {n} min', 'transfers.eta_hours': 'faltam {n} h', 'transfers.failed': 'Falhou', 'transfers.disk_full': 'O disco do node está cheio', 'group.select': 'Selecionar', 'group.select_done': 'Concluir', 'group.actions': 'Ações ({n})', 'group.download_n': 'Baixar ({n})', 'group.download_zip_n': 'Baixar as pastas em zip ({n})', 'group.download_zip_one': 'Baixar a pasta em zip', 'group.delete_n': 'Excluir ({n})', 'group.delete_n_confirm': { one: 'Excluir {n} item? {names}', other: 'Excluir {n} itens? {names}', }, 'group.download_zip': { one: 'Baixar em zip ({n} arquivo)', other: 'Baixar em zip ({n} arquivos)', }, 'group.zip_empty': 'Essa pasta não tem nada para baixar.', 'group.zip_no_stream': 'Este navegador não consegue escrever um download direto no ' + 'disco, então {name} ({size}) precisa ser montado antes na memória. Em um arquivo ' + 'grande isso pode falhar. Continuar?', 'group.zip_too_large': '"{name}" tem {size}, e uma pasta só pode ser baixada em zip até {limit}. ' + 'Baixe uma subpasta por vez, ou os arquivos individualmente.', 'group.rmdir': 'Excluir a pasta', 'group.rmdir_confirm': 'Excluir a pasta "{name}"? Ela precisa estar vazia.', 'group.rmdir_not_empty': 'Essa pasta não está vazia. Exclua antes o que está dentro ' + 'dela — nada aqui apaga arquivos que você não vê.', 'group.desc_edit': 'Editar a descrição', 'group.desc_add': 'Adicionar uma descrição', 'group.desc_save': 'Salvar', 'group.desc_cancel': 'Cancelar', 'group.desc_placeholder': 'Para que serve este grupo — os membros veem isto na ' + 'página inicial deles.', 'group.join_code_title': 'Este node precisa reconhecer você', 'group.join_code_hint': 'Peça o código de uso único a quem convidou você e digite-o ' + 'aqui. Depois disso este navegador fica reconhecido e a pergunta não se repete.', 'group.join_code_btn': 'Participar', 'group.pass_title': 'Digite a sua frase secreta', 'group.pass_hint': 'Este navegador ainda não desbloqueou as suas chaves. Digite a sua frase secreta uma vez para abrir os seus grupos aqui.', 'group.pass_btn': 'Desbloquear', 'notif.purge': 'Limpar tudo', 'notif.title': 'Notificações', 'notif.empty': 'Nenhuma notificação', 'notif.mark_all_read': 'Marcar tudo como lido', // Sidebar 'sidebar.search': 'Pesquisar arquivos', // Status // Search 'search.placeholder': 'Pesquisar em todos os grupos...', 'search.no_results': 'Nenhum arquivo corresponde à sua pesquisa.', 'search.col_group': 'Grupo', 'search.result_count': { one: '{n} arquivo encontrado', other: '{n} arquivos encontrados', }, 'search.hint': 'Digite um termo para pesquisar em todos os seus grupos.', 'search.indexing': 'Indexando {done} / {total} grupos…', 'search.unreachable': { one: '{n} grupo inacessível', other: '{n} grupos inacessíveis' }, 'search.n_sources': { one: '{n} fonte', other: '{n} fontes' }, 'search.view_files': 'Arquivos', 'search.view_videos': 'Vídeos', 'search.view_music': 'Música', 'search.view_photos': 'Fotos', 'search.connecting': 'Conectando aos grupos…', // Presence, chat paging, leaving a group, the profile page 'presence.online': 'Um node que hospeda este grupo está on-line', 'presence.offline': 'Nenhum node acessível para este grupo', 'presence.unknown': 'Ainda não verificado', 'presence.indexing': 'Indexando — {pct}%', 'indexdock.kind_scan': "Indexando", 'indexdock.kind_rescan': "Relendo", 'indexdock.kind_reconcile': "Atualizando", 'indexdock.kind_watch': "Indexando arquivos novos", 'indexdock.waiting': "Aguardando indexação", 'indexdock.done': "Indexação concluída", 'indexdock.listing': "Listando arquivos…", 'indexdock.percent': "{pct}%", 'indexdock.files': "{done} / {total} arquivos", 'indexdock.next': "Em seguida: {roots}", 'indexdock.next_count': "Na fila: {count}", 'indexdock.open': "Abrir as configurações deste grupo", 'indexdock.hide': "Ocultar até a próxima indexação", 'chat.load_older': 'Carregar {n} mensagens anteriores', 'chat.start_of_history': 'Início da conversa', 'chat.today': 'Hoje', 'chat.yesterday': 'Ontem', 'chat.unread': 'Mensagens novas', 'chat.jump_latest': 'Ir para a mais recente', 'chat.jump_new': 'Mensagens novas', 'chat.unreadable': 'Não foi possível ler esta mensagem', 'chat.unreadable_signature': 'Mensagem não verificada — a assinatura não corresponde ao remetente', 'chat.unreadable_epoch': 'Escrita antes de este dispositivo poder ler esta conversa', 'chat.unreadable_keys': 'Chaves do chat indisponíveis — reconecte-se para ler isto', 'chat.unreadable_decrypt': 'Não foi possível descriptografar esta mensagem', 'chat.unreadable_envelope': 'Esta mensagem chegou incompleta', 'chat.unreadable_format': 'Esta mensagem exige uma versão mais recente do MeshBay', 'chat.key_changed': 'Esta conta está usando uma chave que você nunca viu', 'chat.key_changed_hint': 'O nó diz que esta mensagem veio desta conta, mas a chave do dispositivo não é uma que você aceitou e nada a assinou. Pode ser um novo dispositivo adicionado em outro lugar — ou o nó apontando a pessoa errada.', 'chat.encrypted_needs_newer': 'Esta conversa é criptografada e este cliente não consegue lê-la — atualize o MeshBay', 'chat.encrypted_cannot_send': 'Esta conversa é criptografada e este dispositivo ainda não pode escrever nela', 'group.leave': 'Sair do grupo', 'group.leave_confirm': 'Sair de “{name}”? Você perderá o acesso aos arquivos e à conversa. Os arquivos que você enviou permanecem no node, e ele mantém a identidade que fixou para você até que o operador dele a remova.', 'group.mute': 'Mute notifications', 'group.unmute': 'Unmute notifications', 'profile.title': 'Perfil', 'usermenu.profile': 'Perfil', // First-run setup wizard 'setup.welcome_title': 'Bem-vindo ao MeshBay', 'setup.welcome_message': 'Seu node hospeda seus arquivos — criptografados, na sua máquina. Vamos iniciá-lo e criar seu primeiro grupo.', 'setup.node_detected': 'Node local detectado e em execução.', 'setup.node_not_running': 'Seu node está instalado mas não está em execução.', 'setup.node_start': 'Iniciar node', 'setup.node_starting': 'Iniciando node…', 'setup.node_started': 'Node iniciado.', 'setup.node_not_installed': 'meshbay-node não está instalado nesta máquina.', 'setup.node_install_hint': 'Instale-o com seu gerenciador de pacotes e volte aqui.', 'setup.node_startup_hint': 'Assim que seu node estiver em execução, acesse "Node" na barra lateral a qualquer momento para fazê-lo iniciar automaticamente ao entrar, ou rodar como um serviço em segundo plano.', 'setup.skip': 'Pular — criar um grupo sem node local', 'setup.create_group': 'Criar seu primeiro grupo', 'setup.dismiss': 'Pular configuração', // Group misc 'group.retry': 'Tentar novamente', 'lazy.load_failed': 'Não foi possível carregar esta parte da interface. O hub pode ter sido atualizado desde que esta página foi aberta.', 'lazy.reload': 'Recarregar a página', // Sidebar 'sidebar.phone': 'Celular', 'androidsync.title': 'Android Sync', 'sidebar.node': 'Node', // Node admin 'node.title': 'Node', 'node.service_checking': 'Verificando o serviço do nó…', 'node.service_not_installed': 'Não instalado como serviço', 'node.service_state_active': 'Em execução', 'node.service_state_inactive': 'Parado', 'node.service_state_failed': 'Falhou', 'node.service_state_activating': 'Iniciando…', 'node.service_state_deactivating': 'Parando…', 'node.service_state_unknown': 'Desconhecido', 'node.service_start': 'Iniciar', 'node.service_starting': 'Iniciando…', 'node.service_stop': 'Parar', 'node.service_stopping': 'Parando…', 'node.service_restart': 'Reiniciar', 'node.service_restarting': 'Reiniciando…', 'node.service_mode_hint': 'Em execução como serviço em segundo plano — inicia na inicialização, antes do login.', 'node.startup_mode_label': 'Iniciar automaticamente:', 'node.startup_mode_off': 'Somente enquanto o MeshBay estiver aberto', 'node.startup_mode_signin': 'Ao entrar na sessão', 'node.startup_mode_service': 'Como serviço em segundo plano (inicia na inicialização)', 'node.startup_mode_updating': 'Alternando modo — verifique se aparece um aviso de administrador…', 'node.startup_mode_service_unavailable_hint': 'O modo de serviço em segundo plano requer uma versão instalada. Para testes locais, execute "meshbay-node service install" em um PowerShell com privilégios de administrador.', 'node.startup_mode_service_store_hint': 'Iniciar com o sistema, antes de qualquer login, exige o instalador do MeshBay (.exe) em vez da versão da Microsoft Store.', 'node.not_operator': 'Não foi possível alcançar seu node. Verifique se ele está em execução.', 'node.offline': 'Node está off-line', 'node.retry': 'Tentar novamente', 'node.pair_needed': 'Nenhum operador pareado. Insira um código de pareamento para habilitar operações administrativas (convites, exclusão de arquivos).', 'node.pair_code_placeholder': 'Código de pareamento', 'node.pair_button': 'Parear este navegador', 'node.pair_success': 'Pareamento realizado com sucesso.', 'node.pair_pending': 'Código de pareamento pronto: ele será usado na próxima vez que você abrir um dos grupos deste Node.', 'node.link_other_node': "Sua conta está vinculada ao node de outra máquina, então este node não pode servir seus grupos.", 'node.link_here': "Vincular este node no lugar", 'node.link_here_confirm': "Vincular este node à sua conta? O node vinculado agora, em outra máquina, deixará de servir seus grupos até ser vinculado novamente.", 'node.link_other_account': "Este node está configurado para {account}, não para você, então não pode servir seus grupos.", 'node.link_take_over': "Usar este node na minha conta", 'node.link_linking': "Vinculando…", 'node.reload': 'Recarregar configuração', 'node.reloaded': 'Configuração recarregada. Alterações de diretórios em grupos existentes estão ativas.', 'node.restart_needed': 'Após adicionar: inicialize a chave do grupo (meshbay-node gek-init --group ).', 'node.no_groups': 'Nenhum grupo configurado neste node.', 'node.stale': 'fora do hub', 'node.settings': 'Node settings', 'node.settings_edit_hint': 'Changes are applied immediately and saved to node.toml.', 'node.settings_save': 'Save', 'node.settings_saving': 'Saving…', 'node.settings_saved': 'Settings saved.', 'node.setting_invite_ttl': 'Invitation TTL', 'node.setting_pair_ttl': 'Pairing code TTL', 'node.setting_device_ttl': 'Device request TTL', 'node.setting_max_streams': 'Max concurrent streams', 'node.setting_max_downloads': 'Máximo de downloads simultâneos', 'node.setting_max_uploads': 'Máximo de envios simultâneos', 'node.setting_transcode': 'Transcode incompatible video', 'node.setting_max_upload': 'Maior envio individual', 'node.setting_unit_gb': 'GB', 'node.setting_unit_hours': 'hours', 'node.setting_unit_minutes': 'min', 'node.setting_on': 'On', 'node.setting_off': 'Off', 'node.unavailable': 'indisponível', 'node.files': { one: '1 arquivo', other: '{n} arquivos' }, 'node.peers': { one: '1 par', other: '{n} pares' }, 'node.roots': 'Diretórios', 'node.add_root': 'Adicionar diretório', 'node.remove_root': 'Remover', 'node.root_no_signing_key': 'Nenhuma chave de assinatura disponível — pareie este dispositivo com o nó primeiro', 'node.root_no_route': 'Sem rota até o nó — conecte-se a ele ou use o aplicativo na máquina que o hospeda', 'node.root_remove_last': 'Um grupo precisa de pelo menos um diretório', 'node.root_path': 'Caminho', 'node.directory': 'Diretório', 'node.root_added': 'Diretório adicionado.', 'node.root_remove_confirm': 'Remover "{name}" deste grupo?', 'node.root_removed': 'Diretório removido. Reinicialização recomendada para atualizar o índice.', 'node.attach_group': 'Adicionar grupo', 'node.attach_pick': 'Grupo a hospedar', 'node.attach_dir': 'Diretório compartilhado', 'node.attach_upload_dir': 'Diretório de upload', 'node.attach_upload_label': 'Diretório de upload (para envio de arquivos e anexos do chat)', 'node.attached': 'Grupo adicionado e carregado. Execute meshbay-node gek-init --group {name} se ainda não o fez.', 'node.detach_group': 'Remover grupo', 'node.detach_confirm': 'Remover "{name}" deste node?', 'node.detached': 'Grupo removido.', 'node.gek': 'Chave do grupo', 'node.no_gek': 'Sem chave de grupo', 'node.gek_init_hint': 'Ainda não há chave de grupo. Execute GEK init na CLI para configurá-la.', 'node.gek_public_hint': 'A rotação de chave não está disponível para grupos públicos.', 'node.gek_rotate': 'Rotacionar chave do grupo', 'node.gek_rotated': 'Chave do grupo rotacionada.', 'node.roster': 'Cadastro', 'node.roster_load': 'Carregar cadastro', 'node.roster_empty': 'Nenhum membro fixado ainda.', 'node.roster_user': 'Usuário', 'node.roster_role': 'Função', 'node.roster_status': 'Status', 'node.roster_via': 'Fixado via', 'node.roster_invites': { one: '1 convite pendente', other: '{n} convites pendentes' }, 'node.unpin': 'Desfixar', 'node.unpin_confirm': 'Desfixar "{name}"? A pessoa precisará parear novamente.', 'node.unpin_done': 'Identidade desfixada.', 'node.denylist': 'Lista de bloqueio', 'node.denylist_load': 'Carregar lista de bloqueio', 'node.denylist_empty': 'A lista de bloqueio está vazia.', 'node.denylist_count': { one: '1 entrada', other: '{n} entradas' }, 'node.denylist_remove': 'Remover', 'node.denylist_clear_all': 'Limpar tudo', 'node.denylist_clear_confirm': 'Remover "{subject}" da lista de bloqueio?', 'node.denylist_cleared': 'Entrada removida da lista de bloqueio.', // Settings — node 'settings_node.detach_failed_continue': 'Não foi possível desanexar o grupo do node. Excluir do hub mesmo assim?', 'settings_node.roots': 'Diretórios compartilhados', 'settings_node.scan_title': 'Varredura', 'settings_node.scan_hint': 'Com que frequência o node reverifica seus diretórios em busca de mudanças que possa ter perdido, e quanto tempo espera após uma mudança antes de indexar um arquivo.', 'settings_node.search_listed_title': 'Busca', 'settings_node.search_listed_label': 'Mostrar este grupo na busca', 'settings_node.search_listed_hint': 'Desativado, os arquivos deste grupo não aparecem na busca global dos membros. Os membros continuam vendo tudo ao abrir o grupo: isso só o retira da listagem global e não esconde nada de ninguém.', 'settings_node.scan_reconcile_label': 'Intervalo de reverificação (minutos)', 'settings_node.scan_debounce_label': 'Espera após uma mudança (segundos)', 'settings_node.scan_save': 'Salvar', 'settings_node.scan_saving': 'Salvando…', 'settings_node.scan_saved': 'Salvo.', 'settings_node.tmdb_title': 'Metadados do TMDB', 'settings_node.tmdb_hint': 'Permite que o app de Vídeos mostre pôsteres, sinopses e elenco do TMDB. Desativado significa navegação apenas com miniaturas, sem nenhuma solicitação a terceiros.', 'settings_node.tmdb_enabled': 'Ativado', 'settings_node.tmdb_disabled': 'Desativado', 'settings_node.tmdb_token_label': 'Token de API personalizado (opcional)', 'settings_node.tmdb_token_placeholder': 'Deixe em branco para usar o token padrão', 'settings_node.tmdb_token_customized': 'Um token personalizado está definido.', 'settings_node.tmdb_token_default': 'Usando o token padrão.', 'settings_node.tmdb_save': 'Salvar', 'settings_node.tmdb_language_label': 'Idioma', 'settings_node.tmdb_language_hint': 'Aplica-se a todos — um cache compartilhado, não uma solicitação por espectador.', 'settings_node.video_root_title': 'Pasta raiz de Vídeos', 'settings_node.video_root_hint': 'Qual pasta (ou subpasta) o app Vídeos trata como ponto de entrada para este grupo. Nada é exibido em Vídeos, e nenhuma busca no TMDB é feita, até que uma seja escolhida.', 'settings_node.video_root_none': '— nenhuma escolhida —', 'settings_node.musicbrainz_title': 'Metadados do MusicBrainz', 'settings_node.musicbrainz_hint': 'Permite que o app Música mostre capas e nomes canônicos do MusicBrainz quando uma faixa não tem uma capa incorporada utilizável. Desativado significa navegação apenas por tags/nome de arquivo, sem solicitação a terceiros.', 'settings_node.musicbrainz_enabled': 'Ativado', 'settings_node.musicbrainz_disabled': 'Desativado', 'settings_node.video_root_save': 'Salvar', 'settings_node.video_root_change_confirm': 'Alterar a raiz de Vídeos substitui o que cada membro vê na aba Vídeos. Continuar?', 'settings_node.audio_root_title': 'Pasta raiz de Música', 'settings_node.audio_root_hint': 'Qual pasta (ou subpasta) o app Música trata como ponto de entrada para este grupo. Nada é exibido em Música, e nenhuma leitura de tags/capas é feita, até que uma seja escolhida.', 'settings_node.audio_root_none': '— nenhuma escolhida —', 'settings_node.audio_root_save': 'Salvar', 'settings_node.audio_root_change_confirm': 'Alterar a raiz de Música substitui o que cada membro vê na aba Música. Continuar?', 'settings_node.photo_roots_title': 'Pastas raiz de Fotos', 'settings_node.photo_roots_hint': 'Quais pastas o app Fotos trata como pontos de entrada para este grupo — uma biblioteca de fotos costuma estar espalhada em várias pastas, então mais de uma pode ser escolhida. Nada é exibido em Fotos até que ao menos uma seja adicionada.', 'settings_node.photo_roots_none': '— nenhuma escolhida —', 'settings_node.photo_roots_add_placeholder': 'Adicionar uma pasta…', 'settings_node.photo_roots_add': 'Adicionar', 'settings_node.photo_roots_remove': 'Remover', 'settings_node.photo_roots_save': 'Salvar', 'settings_node.shared_directories_title': 'Diretórios compartilhados', 'settings_node.shared_directories_hint': 'Pastas compartilhadas com este grupo. Alterne leitura-escrita para permitir uploads, marque como removível para unidades externas.', 'folder_tree.title_single': 'Escolher uma pasta', 'folder_tree.title_multi': 'Escolher pastas', 'folder_tree.choose': 'Escolher…', 'folder_tree.remove': 'Remover', 'folder_tree.add': 'Adicionar uma pasta…', 'folder_tree.confirm': 'Usar', 'folder_tree.expand': 'Expandir', 'folder_tree.collapse': 'Recolher', 'folder_tree.nothing_selected': 'Nada selecionado', 'folder_tree.empty': 'Este grupo ainda não tem diretórios compartilhados.', 'folder_tree.writable_only': 'Aqui só é possível escolher diretórios de leitura e escrita — arquivos são gravados nele.', 'folder_tree.no_writable_root': 'Este grupo não tem diretório gravável. Ative leitura e escrita em Diretórios compartilhados primeiro.', 'folder_tree.read_only_blocked': 'Somente leitura — não é possível gravar', 'settings_app.save': 'Salvar', 'settings_app.saving': 'Salvando…', 'settings_app.disabled_hint': 'Ative este aplicativo para configurá-lo.', 'settings_app.video_directories_label': 'Pastas de vídeo', 'settings_app.video_directories_hint': 'Onde ficam os filmes e séries deste grupo. Nada fora delas aparece na aba Vídeos.', 'settings_app.music_directories_label': 'Pastas de música', 'settings_app.music_directories_hint': 'Onde ficam os álbuns deste grupo. Nada fora delas aparece na aba Música.', 'settings_app.photo_directories_label': 'Pastas de fotos', 'settings_app.photo_directories_hint': 'Onde ficam os álbuns deste grupo. Nada fora delas aparece na aba Fotos.', 'settings_app.chat_directory_label': 'Pasta de anexos', 'settings_app.chat_directory_hint': 'Onde os arquivos enviados no chat são gravados. Precisa ser um diretório de leitura e escrita.', 'settings_app.chat_no_writable_root': 'Este grupo não tem diretório gravável, então os anexos estão desativados.', 'settings_app.chat_link_preview_label': 'Prévias de links', 'settings_app.chat_link_preview_hint': 'Quando alguém publica um link, o nó busca o título e a imagem da página. É uma requisição da sua máquina para um site escolhido por outra pessoa.', 'settings_app.chat_encrypted_always': 'O chat deste grupo é sempre criptografado. Não é possível desativar.', 'settings_app.chat_rotate_epoch': 'Girar a chave do chat', 'settings_app.chat_rotate_epoch_hint': 'Os membros continuam lendo todo o histórico. Quem foi removido do grupo não conseguirá ler o que for escrito daqui em diante. Remover um membro ou dispositivo já faz isso sozinho.', 'settings_app.chat_purge': 'Limpar o chat', 'settings_app.chat_purge_hint': 'Apaga todas as mensagens do chat deste grupo neste nó, para todos os membros. Os anexos ficam na pasta deles. Não é possível desfazer.', 'settings_app.tmdb_token_prompt': 'Cadastre-se no TMDB para gerar sua própria chave de API.', 'settings_app.tmdb_token_link': 'Obter uma chave', 'settings_node.roots_offline_hint': 'Sem conexão com o nó — as alterações passam pelo nó local e entram em vigor no próximo recarregamento.', 'settings_node.roots_local_only_hint': 'Adicionar uma pasta e alternar leitura-gravação ou removível são feitos na máquina do nó — no aplicativo de desktop ou com meshbay-node root.', 'settings_node.directories_title': 'Diretórios de apps', 'settings_node.directories_hint': 'Pastas compartilhadas, e qual delas os apps Vídeos, Música e Fotos tratam como seu(s) próprio(s) ponto(s) de entrada.', // Create group wizard 'wizard.title': 'Criar grupo', 'wizard.detecting': 'Detectando node local…', 'wizard.node_not_found': 'Nenhum node local detectado. Verifique se o meshbay-node está em execução.', 'wizard.node_offline_warning': 'O node não está em execução. O grupo será criado apenas no hub. Você pode conectar o node posteriormente pela página Node.', 'wizard.retry': 'Tentar novamente', 'wizard.wrong_account': 'O node está em execução, mas o nome de usuário configurado não corresponde à sua conta. Verifique hub.username em node.toml.', 'wizard.skip_node': 'Continuar sem node', 'wizard.directories': 'Diretórios compartilhados', 'wizard.directories_hint': 'Escolha os diretórios que este grupo compartilhará. Pelo menos um é obrigatório.', 'wizard.add_directory': 'Adicionar diretório', 'wizard.remove': 'Remover', 'wizard.set_upload': 'Definir como destino de upload', 'wizard.upload_target': 'destino de upload', 'wizard.create_and_setup': 'Criar e configurar', 'wizard.create_hub_only': 'Criar apenas no hub', 'wizard.setting_up': 'Configurando seu grupo…', 'wizard.step_create_hub': 'Criando grupo no hub', 'wizard.step_attach': 'Anexando ao node', 'wizard.step_apps': 'Escolhendo aplicativos', 'wizard.step_add_roots': 'Adicionando diretórios', 'wizard.step_gek': 'Inicializando chave de criptografia', 'wizard.step_pair': 'Configurando pareamento', 'wizard.step_index': 'Indexando arquivos', 'wizard.indexing_progress': 'Indexando… {pct}%', 'wizard.indexing_current_dir': 'Analisando: {dir}', 'wizard.done_title': 'Grupo criado', 'wizard.done_message': 'Seu grupo está pronto — seu node o está hospedando e a criptografia está configurada. Agora convide membros pela aba Configurações.', 'wizard.go_to_group': 'Ir para o grupo', 'wizard.finish_later': 'Finalizar configuração depois', 'node.stun_servers': 'STUN Servers', 'node.stun_hint': 'Servers used for WebRTC NAT traversal (ICE candidate gathering).', 'node.stun_add': 'Add', 'node.stun_add_placeholder': 'stun:host:port', 'node.stun_remove': 'Remove', 'node.stun_move_up': 'Move up', 'node.stun_move_down': 'Move down', 'node.stun_save': 'Save', 'node.stun_saving': 'Saving…', 'node.stun_saved': 'STUN servers saved.', 'node.stun_reset': 'Reset to defaults', 'node.stun_empty': 'No STUN servers configured. NAT traversal will not work.', 'node.stun_duplicate': 'This server is already in the list.', 'node.stun_invalid': 'STUN URL must start with stun:', 'node.ice_interfaces': 'ICE Interfaces', 'node.ice_auto_hint': 'Auto mode — virtual and VPN interfaces (Tailscale, Docker, libvirt, etc.) are excluded automatically.', 'node.ice_manual_hint': 'Manual mode — only the listed interfaces are used for ICE candidate gathering.', 'node.ice_add': 'Add', 'node.ice_add_placeholder': 'e.g. eth0, wlp0s20f3', 'node.ice_remove': 'Remove', 'node.ice_save': 'Save', 'node.ice_saving': 'Saving…', 'node.ice_saved': 'ICE interfaces saved.', 'node.ice_reset_auto': 'Switch to auto', 'node.ice_duplicate': 'This interface is already in the list.', 'node.overview': 'Overview', 'node.overview_version': 'Version', 'node.overview_node_id': 'Node ID', 'node.overview_node_key': 'Chave do node', 'node.overview_node_key_copy': 'Copiar', 'node.overview_node_key_copied': 'Copiada', 'node.overview_quic_port': 'QUIC port', 'node.overview_hub': 'Hub', 'node.node_roster': 'Node roster', 'node.node_roster_hint': 'Every identity this node recognises, across all groups.', 'node.roster_scope': 'Scope', 'node.roster_scope_node': 'node-wide', 'node.peers_title': 'Connected peers', 'node.peers_empty': 'No peers connected.', 'node.peers_user': 'User', 'node.peers_ip': 'IP', 'node.peers_group': 'Group', 'node.peers_state': 'State', 'node.audit_title': 'Audit log', 'node.audit_all_events': 'All events', 'node.audit_empty': 'No audit entries.', 'node.audit_time': 'Time', 'node.audit_event': 'Event', 'node.audit_user': 'User', 'node.audit_ip': 'IP', 'node.audit_group': 'Group', 'node.audit_detail': 'Detail', 'node.maintenance': 'Maintenance', 'node.maintenance_cache': 'Index cache: {n} path(s) remembered.', 'node.maintenance_prune': 'Prune stale entries', 'node.maintenance_pruned': 'Pruned {n} stale cache entries.', 'node.loading': 'Loading…', 'node.audit_export': 'Export CSV', 'node.audit_exporting': 'Exporting…', 'node.audit_prev': 'Previous', 'node.audit_next': 'Next', 'node.audit_page': 'Page {n}', 'node.audit_exported': 'Exported {n} entries.', 'node.unlink_title': 'Unlink from hub', 'node.unlink_hint': 'Stops the hub from brokering connections to this node and listing it for group members. Your groups, keys, roster and files are untouched — the node keeps serving anyone who reaches it directly. Re-link any time from the group wizard or your profile.', 'node.unlink_button': 'Unlink this node', 'node.unlink_confirm': 'Unlink this node from the hub? The hub will stop routing members to it. Group data on disk is not affected.', 'node.unlink_done': 'Node unlinked from the hub. It may take a moment for the hub connection to drop.', 'node.tab_overview': 'Overview', 'node.tab_groups': 'Groups', 'node.tab_roster': 'Roster', 'node.tab_peers': 'Peers', 'node.tab_audit': 'Audit', 'node.tab_settings': 'Settings', 'node.root_rw': 'leitura-escrita', 'node.root_ro': 'somente leitura', 'node.removable': 'removível', // In-page confirm/alert (ask.js) 'dialog.ok': 'OK', 'dialog.cancel': 'Cancelar', // Content reports (report.js, admin-page.js) 'report.action': "Denunciar", 'report.title': "Denunciar este arquivo", 'report.hint': "Um administrador deste hub vai analisá-lo.", 'report.reason_illegal': "Conteúdo ilegal", 'report.reason_spam': "Spam", 'report.reason_copyright': "Violação de direitos autorais", 'report.reason_other': "Outro", 'report.detail_placeholder': "Detalhes (opcional)", 'report.send': "Enviar denúncia", 'report.sent': "Obrigado. Sua denúncia foi registrada.", 'admin.tab_reports': "Denúncias", 'admin.no_reports': "Nada aguarda decisão", 'admin.col_reporters': "Denunciantes", 'admin.btn_dismiss': "Descartar", 'admin.report_block_confirm': "Bloquear este arquivo? Todos os nós que hospedam um grupo público deixarão de servi-lo ali.", 'admin.reports_heading': "Denúncias de conteúdo", 'admin.reports_hint': "Quem pode denunciar um arquivo em um grupo público, com que frequência e o que acontece quando membros suficientes o fizeram.", 'admin.reports_min_account_age_hours': "Idade mínima da conta (horas)", 'admin.reports_daily_per_account': "Denúncias por conta por dia", 'admin.reports_review_threshold': "Membros antes da análise", 'admin.reports_auto_block': "Bloquear sem análise (1 = sim, 0 = não)", 'admin.reports_save': "Salvar configurações de denúncias", // Names made writable everywhere when saved (portable-name.js) 'transfers.renamed': "Renomeado: “{name}” não é um nome válido em todos os sistemas", 'transfers.renamed_n': "Nomes alterados para serem válidos em todos os sistemas: {n}", // Invitations waiting for an answer, and the nodes a group owner approves 'home.invitations': "Convites", 'home.invitation_hint': "Alguém adicionou você a estes grupos. Aceite apenas os que espera: um grupo em que você entra vê o seu endereço quando você o abre.", 'home.invited_by': "convidado por {name}", 'home.accept': "Aceitar", 'home.decline': "Recusar", 'members.invited': "convidado", 'members.awaiting_code': "waiting for their code", 'hosts.title': "Hosts", 'hosts.hint': "Seus próprios nodes servem este grupo sem perguntar. Outro node só o serve depois que você o aprova aqui; um node que pede aparece abaixo.", 'hosts.none': "Nenhum outro node pediu para hospedar este grupo.", 'hosts.from': "Um node de {name}", 'hosts.status_pending': "aguardando sua resposta", 'hosts.status_approved': "aprovado", 'hosts.status_refused': "recusado", 'hosts.approve': "Aprovar", 'hosts.refuse': "Recusar", 'hosts.online': "online", 'group.bundle_format_retired': 'Este node guarda sua identidade em um formato que esta versão não lê mais. Peça ao operador que execute "meshbay-node member unpin" para sua conta e envie um novo código de convite.', 'settings.browser_access': 'Acesso pelo navegador', 'settings.browser_access_on_hint': 'Um navegador pode abrir seus grupos com sua frase secreta: este aplicativo deixa sua identidade em cada node, selada de forma que apenas sua frase secreta, junto com sua conta no hub, possa abri-la.', 'settings.browser_access_off_hint': 'Suas identidades ficam neste dispositivo. Nada delas é deixado em nenhum node, e um navegador não consegue abrir seus grupos só com sua frase secreta. Um navegador que você aprovar por este aplicativo recebe identidades próprias.', 'settings.browser_access_turn_on': 'Permitir navegadores', 'settings.browser_access_turn_off': 'Manter as identidades só neste dispositivo', 'settings.browser_access_next_open': 'Aplicado a cada grupo na próxima vez que ele abrir.', 'settings.browser_access_off_in_browser': 'O acesso pelo navegador está desativado para esta conta. Ele é ativado no aplicativo de desktop do MeshBay, que também pode aprovar este navegador para si.', 'group.browser_access_off': 'O acesso pelo navegador está desativado para esta conta. Ative-o no aplicativo de desktop do MeshBay (Perfil) ou aprove este navegador por ele.', // Worded by the desktop main process for its own dialogs (main.js). 'native.node_account_confirm': 'O node deste computador está configurado para {current}. Configurá-lo para {next} em vez disso? Ele deixará de servir os grupos que hospeda para {current}.', 'native.browser_access_confirm': 'Permitir o acesso por um navegador? O aplicativo deixará sua identidade em cada node que você usa, selada de forma que apenas sua frase secreta, junto com sua conta no hub, possa abri-la.', 'native.declined': 'Cancelado — nada foi alterado.', // Photo backup, Android only (photo-sync.js, photo-sync-settings.js). 'photosync.heading': "Backup de fotos", 'photosync.intro': "Envie as fotos tiradas com este celular para uma pasta de um dos seus grupos, uma vez por dia, pelo Wi-Fi. Fotos apagadas do celular continuam no grupo.", 'photosync.setup': "Configurar", 'photosync.change': "Alterar", 'photosync.turn_off': "Desativar", 'photosync.now': "Fazer backup agora", 'photosync.permission_needed': "O MeshBay precisa de acesso às fotos deste celular.", 'photosync.permission_allow': "Permitir acesso", 'photosync.permission_partial': "O acesso está limitado às fotos que você selecionou: novas fotos não serão salvas até você permitir o acesso a todas.", 'photosync.group': "Grupo", 'photosync.choose_group': "Escolha um grupo", 'photosync.checking_group': "Lendo as pastas do grupo…", 'photosync.group_offline': "Nenhum node que hospeda este grupo está on-line agora. Tente de novo quando estiver.", 'photosync.folder': "Pasta", 'photosync.albums': "Álbuns deste celular", 'photosync.album_camera': "Câmera", 'photosync.album_count': "{n} fotos · {size}", 'photosync.scope_existing': "As fotos que já estão neste celular, depois as novas", 'photosync.scope_new': "Somente as fotos tiradas a partir de agora", 'photosync.start': "Iniciar backup", 'photosync.confirm': "{count} fotos ({size}) serão enviadas para {dir} e depois as novas uma vez por dia.", 'photosync.confirm_new': "As fotos novas serão enviadas para {dir} uma vez por dia.", 'photosync.metered_confirm': "Você está usando dados móveis — {count} fotos, {size}. Enviar mesmo assim?", 'photosync.other_account': "Configurado para @{account}. Entre como @{account} para continuar, ou configure de novo aqui.", 'photosync.sent_total': "Fotos enviadas: {n}", 'photosync.last_run': "Último backup: {when}", 'photosync.never': "Ainda sem backup", 'photosync.state_waiting_wifi': "Aguardando Wi-Fi", 'photosync.state_connecting': "Conectando ao grupo…", 'photosync.state_sending': "Enviando {done} / {total}", 'photosync.state_offline': "Nenhum node do grupo está on-line; nova tentativa mais tarde", 'photosync.state_interrupted': "Interrompido — continuará na próxima oportunidade", 'photosync.state_up_to_date': "Atualizado", 'photosync.notif_progress': "Backup de fotos — {done} / {total}", 'photosync.fail_disk_full': "Backup de fotos parado: o disco do node está cheio.", 'photosync.fail_read_only': "Backup de fotos parado: a pasta não aceita mais envios.", 'photosync.fail_no_folder': "Backup de fotos parado: a pasta não existe mais no grupo.", 'photosync.fail_unavailable': "Backup de fotos parado: o disco da pasta não está conectado ao node.", 'photosync.fail_not_member': "Backup de fotos parado: você não é mais membro deste grupo.", 'photosync.fail_permission': "Backup de fotos parado: o MeshBay não tem mais acesso às fotos.", 'photosync.fail_other': "Backup de fotos parado.", 'contactsync.heading': "Backup de contatos", 'contactsync.intro': "Enviar uma cópia dos contatos deste celular uma vez por dia se tiverem mudado. Cada cópia é um arquivo .vcf que qualquer celular consegue importar.", 'contactsync.permission_needed': "O MeshBay precisa de acesso aos contatos deste celular.", 'calendarsync.heading': "Backup da agenda", 'calendarsync.intro': "Enviar uma cópia das agendas deste celular uma vez por dia se tiverem mudado: as que você pode editar, não as que você só assina. Cada cópia é um arquivo .ics que qualquer agenda consegue importar.", 'calendarsync.permission_needed': "O MeshBay precisa de acesso às agendas deste celular.", 'messagesync.heading': "Backup de SMS", 'messagesync.intro': "Enviar os SMS deste celular uma vez por dia: a primeira cópia contém todos, cada uma das seguintes só os novos. Os arquivos estão no formato XML que os apps de backup de SMS conseguem restaurar. MMS não são incluídos.", 'messagesync.permission_needed': "O MeshBay precisa de acesso aos SMS deste celular.", 'phonesync.state_sending': "Enviando…", 'phonesync.summary': "{group} → {dir}", 'phonesync.copies_sent': "Cópias enviadas: {n}", 'phonesync.last_file': "Última cópia: {name}", 'phonesync.checking_groups': "Procurando grupos dos quais você é dono e único membro…", 'phonesync.no_private_group': "Você não tem nenhum grupo do qual seja dono e único membro. Crie um só para você e volte aqui.", 'phonesync.no_folder': "Este grupo não tem nenhuma pasta onde você possa adicionar arquivos.", 'phonesync.notice': "{what}. {reason}", 'phonesync.fail_disk_full': "Parado: o disco do node está cheio.", 'phonesync.fail_read_only': "Parado: a pasta não aceita mais envios.", 'phonesync.fail_no_folder': "Parado: a pasta não existe mais no grupo.", 'phonesync.fail_unavailable': "Parado: o disco da pasta não está conectado ao node.", 'phonesync.fail_not_member': "Parado: você não é mais membro deste grupo.", 'phonesync.fail_not_private': "Parado: outra pessoa entrou no grupo.", 'phonesync.fail_permission': "Parado: o MeshBay não tem mais acesso.", 'phonesync.fail_other': "Parado.", 'androidsync.dest_heading': "Destino dos backups", 'androidsync.dest_intro': "Os backups vão para uma pasta de um grupo do qual você é dono e único membro. Cada tipo de backup tem a sua própria pasta lá.", 'androidsync.dest_summary': "{group} → {folder}", 'androidsync.dest_dirs': "Pastas usadas: {dirs}", 'androidsync.dest_change_confirm': "Todos os backups vão recomeçar em {folder} de {group}. O que já foi enviado fica onde está.", 'androidsync.dest_not_in_photos': "A aba Fotos do grupo não mostra {dir}: as fotos serão salvas, mas não aparecerão lá até que essa pasta seja uma das pastas da aba (configurações do grupo).", 'androidsync.dest_needed': "Escolha primeiro o destino dos backups, no topo desta página.", 'androidsync.dest_save': "Salvar", 'phonesync.turn_on': "Ativar", 'photosync.fail_not_private': "Backup de fotos parado: outra pessoa entrou no grupo.", };