aboutsummaryrefslogtreecommitdiffstats
path: root/packages/meshbay-hub/src/meshbay_hub/static/locales/pt-BR.js
diff options
context:
space:
mode:
Diffstat (limited to 'packages/meshbay-hub/src/meshbay_hub/static/locales/pt-BR.js')
-rw-r--r--packages/meshbay-hub/src/meshbay_hub/static/locales/pt-BR.js243
1 files changed, 231 insertions, 12 deletions
diff --git a/packages/meshbay-hub/src/meshbay_hub/static/locales/pt-BR.js b/packages/meshbay-hub/src/meshbay_hub/static/locales/pt-BR.js
index c2cb35e..6c4f03b 100644
--- a/packages/meshbay-hub/src/meshbay_hub/static/locales/pt-BR.js
+++ b/packages/meshbay-hub/src/meshbay_hub/static/locales/pt-BR.js
@@ -93,7 +93,7 @@ export default {
'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 internet como deveria ser.',
+ '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',
@@ -124,6 +124,7 @@ export default {
'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',
@@ -209,6 +210,11 @@ export default {
'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.',
@@ -277,6 +283,7 @@ export default {
'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',
@@ -373,10 +380,17 @@ export default {
one: '{n} foto',
other: '{n} fotos',
},
+ 'photo.n_videos': {
+ one: "{n} vídeo",
+ other: "{n} vídeos",
+ },
+ 'photo.play_video': "Reproduzir o vídeo",
'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',
@@ -390,6 +404,13 @@ export default {
'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',
@@ -420,6 +441,15 @@ export default {
'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.',
@@ -492,12 +522,11 @@ export default {
'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…',
- 'firstrun.note': 'There is no default on purpose: this application only trusts a hub for its API, never for the interface, which ships with the application itself.',
'device.this_device': 'This device',
'settings.keys_heading': 'Keys on this device',
'settings.hub_heading': 'Hub',
'settings.hub_current': 'Currently',
- 'settings.hub_hint': 'Changing this signs you out and restarts the window.',
+ '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.',
@@ -515,6 +544,9 @@ export default {
'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
@@ -695,10 +727,10 @@ export default {
'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. O link funciona uma vez, e só para uma conta registrada com este endereço.",
- 'members.link_email_placeholder': "Endereço de e-mail",
+ '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 para {email}:",
+ '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.",
@@ -707,9 +739,12 @@ export default {
'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 com o endereço de e-mail para o qual o convite foi enviado, ou entre se já tiver uma.",
+ '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}.",
@@ -717,7 +752,6 @@ export default {
'invite.ignore': "Ignorar",
'invite.open': "Abrir o grupo",
'invite.already_member': "Você já é membro de {group}.",
- 'invite.other_account': "Este convite foi enviado para outro endereço de e-mail. Entre com a conta registrada com esse endereço — aliases e pontos devem coincidir exatamente.",
'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.",
@@ -754,6 +788,7 @@ export default {
'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})',
@@ -881,8 +916,12 @@ export default {
// 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
@@ -903,11 +942,12 @@ export default {
'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': 'Desativado (iniciar manualmente)',
+ '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',
@@ -915,6 +955,13 @@ export default {
'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 <nome>).',
@@ -947,8 +994,6 @@ export default {
'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_hint': 'O caminho como o nó o vê, na máquina que hospeda este grupo.',
- 'node.root_path_placeholder': '/home/user/Media',
'node.root_path': 'Caminho',
'node.directory': 'Diretório',
'node.root_added': 'Diretório adicionado.',
@@ -968,7 +1013,6 @@ export default {
'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_rotate_confirm': 'Rotacionar a chave do grupo? Os membros conectados receberão a nova chave automaticamente. O conteúdo já baixado não é afetado.',
'node.gek_rotated': 'Chave do grupo rotacionada.',
'node.roster': 'Cadastro',
'node.roster_load': 'Carregar cadastro',
@@ -1068,9 +1112,12 @@ export default {
'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.',
@@ -1185,4 +1232,176 @@ export default {
// 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.videos_not_included': "Os vídeos não têm backup: “Alterar” para adicioná-los.",
+ 'photosync.videos_included': "Os vídeos também têm backup.",
+ 'photosync.include_videos': "Vídeos também",
+ 'photosync.include_videos_hint': "Vídeos são pesados: vão pelo Wi-Fi como as fotos, e o primeiro backup pode demorar.",
+ 'photosync.album_count_videos': "{n} fotos, {v} vídeos · {size}",
+ 'photosync.confirm_videos': "{count} fotos e vídeos ({size}), sendo {videos} vídeos ({videoSize}), serão enviados para {dir} e depois os novos uma vez por dia.",
+ 'photosync.video_permission_needed': "O MeshBay também precisa de acesso aos vídeos deste celular.",
+ '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.",
+ 'messagesync.restricted_hint': "Se o Android falar de uma configuração restrita: abra as configurações do app, toque em ⋮ no alto, “Permitir configurações restritas” e volte para ativar. O Android exige isso de apps instalados fora de uma loja.",
+ '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.",
+ 'phonesync.open_settings': "Abrir as configurações do app",
+ 'drivesync.heading': "Backup de arquivos",
+ 'drivesync.intro': "Enviar os arquivos das pastas que você escolher neste celular, uma vez por dia, pelo Wi-Fi. Um arquivo alterado no celular é enviado de novo ao lado da cópia anterior; nada é substituído.",
+ 'drivesync.folders': "Pastas com backup",
+ 'drivesync.no_folders': "Nenhuma pasta escolhida ainda.",
+ 'drivesync.folders_hint': "Fotos e vídeos ficam com o backup de fotos: DCIM, Pictures e Movies não podem ser escolhidas. O Android não deixa um app pegar toda a pasta Download, só pastas dentro dela.",
+ 'drivesync.add_folder': "Adicionar uma pasta",
+ 'drivesync.remove': "Remover",
+ 'drivesync.refused_media': "Esta pasta contém fotos e vídeos, que o backup de fotos envia: escolha outra.",
+ 'drivesync.refused_root': "O Android não permite escolher um armazenamento inteiro: escolha uma pasta dentro dele.",
+ 'drivesync.notif_progress': "Backup de arquivos: {done} / {total}",
+ 'drivesync.metered_confirm': "Você está usando dados móveis. Enviar os arquivos mesmo assim?",
+ 'drivesync.sent_total': "Arquivos enviados: {n}",
+ 'whatsappsync.heading': "WhatsApp",
+ 'whatsappsync.intro': "Copiar os backups de conversas que o WhatsApp faz, uma vez por dia pelo Wi-Fi, para poder restaurá-los em um celular novo. Eles continuam criptografados pelo WhatsApp: não dá para lê-los aqui, só restaurar.",
+ 'whatsappsync.folder_needed': "A pasta do WhatsApp ainda não foi escolhida.",
+ 'whatsappsync.folder_chosen': "A pasta do WhatsApp está escolhida.",
+ 'whatsappsync.folder_choose': "Escolher a pasta do WhatsApp",
+ 'whatsappsync.folder_hint': "O seletor abre nela: Android/media/com.whatsapp/WhatsApp. Toque em “Usar esta pasta”.",
+ 'whatsappsync.media': "Mídia também",
+ 'whatsappsync.media_hint': "Fotos, vídeos, mensagens de voz e documentos recebidos e enviados: muitas vezes vários gigabytes. O que o backup de fotos já envia não é enviado duas vezes.",
+ 'whatsappsync.refused': "Esta não é a pasta do WhatsApp: escolha Android/media/com.whatsapp/WhatsApp.",
+ 'whatsappsync.restore_hint': "Para restaurar em um celular novo: copie as pastas Databases e Backups da última cópia para Android/media/com.whatsapp/WhatsApp antes de instalar o WhatsApp e restaure com o mesmo número (e a senha ou a chave de 64 dígitos se o backup criptografado de ponta a ponta estiver ativado).",
+ 'whatsappsync.notif_progress': "Backup do WhatsApp: {done} / {total}",
+ '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.",
};