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.js214
1 files changed, 189 insertions, 25 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 207c1b7..bb7271c 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
@@ -67,6 +67,8 @@ export default {
'register.submit': 'Criar a conta',
'register.loading': 'Criando a conta...',
'register.has_account': 'Já tem uma conta?',
+ 'register.legal_notice': "Ao criar uma conta, você aceita os termos de uso deste hub. A lei o obriga a manter por um ano o registro das suas conexões (endereço IP, data, ação), mesmo depois que sua conta for excluída.",
+ 'register.privacy_link': 'Política de privacidade',
'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.',
@@ -75,9 +77,11 @@ export default {
'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.recovery_mail_self': 'Enviar para o meu e-mail',
+ 'register.recovery_mail_hint': 'Abre o seu próprio app de e-mail com a chave já preenchida. Ela não passa pelo hub; quem puder ler essa caixa de correio poderá usá-la.',
+ 'register.recovery_shown_once': 'Guarde agora — esta é a única vez que é mostrada.',
+ 'register.recovery_mail_subject': 'Chave de recuperação do MeshBay',
+ 'register.recovery_mail_body': 'Chave de recuperação da conta MeshBay {user}:\n\n{key}\n\nEla restaura suas identidades de grupo se você esquecer sua frase secreta. Mantenha esta mensagem privada.',
'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',
@@ -124,6 +128,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',
@@ -137,8 +142,7 @@ export default {
+ '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.',
+ 'captcha.failed': "A verificação anti-robô falhou. Tente novamente.",
// Home
'home.welcome': 'Bem-vindo ao MeshBay',
@@ -209,9 +213,14 @@ 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.',
+ 'device.add_title': 'This computer is not linked to this node yet',
+ 'device.add_hint': 'Your account is known here, but this computer 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',
@@ -277,6 +286,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 +383,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 +407,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 +444,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 +525,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.',
@@ -507,20 +539,26 @@ export default {
'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': "Nodes vinculados",
+ 'settings.node_key_desc': "Os nodes que você executa, um por máquina. Cada um entra no hub com a própria chave, e o app desktop vincula para você o node da sua máquina. Para vincular um manualmente, leia a chave com `meshbay-node status` nessa máquina, ou copie-a em Node → Overview no app desktop, e cole-a aqui.",
'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_current': 'Chave do node vinculado',
+ 'settings.node_key_submit': "Vincular o node",
+ 'settings.node_key_success': "Node vinculado",
+ 'settings.node_key_unlink': "Desvincular",
+ 'settings.node_key_unlink_confirm': "Desvincular o node {key}? Ele deixará de servir seus grupos até que a chave dele seja vinculada novamente. Seus outros nodes não são afetados.",
+ 'settings.node_key_unlinked': "Node desvinculado",
+ 'settings.node_keys_none': "Nenhum node está vinculado à sua conta ainda.",
+ 'settings.node_keys_this_machine': "Esta máquina",
+ 'settings.node_keys_connected': "Conectado agora",
+ 'settings.node_keys_last_seen': "Visto pela última vez {when}",
+ 'settings.node_keys_never': "Ainda não entrou",
+ 'settings.node_keys_linked_on': "vinculado em {when}",
+ 'settings.node_keys_count': "Vinculados: {n} de {limit}",
+ 'settings.node_keys_at_limit': "{limit} nodes vinculados, o máximo para uma conta. Desvincule um que você não usa mais para vincular outro.",
// Sidebar
'sidebar.create_group': 'Criar um grupo',
'sidebar.settings': 'Configurações',
- 'sidebar.admin': 'Administração',
// User menu
'usermenu.language': 'Idioma',
@@ -756,6 +794,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})',
@@ -841,6 +880,8 @@ export default {
'indexdock.next_count': "Na fila: {count}",
'indexdock.open': "Abrir as configurações deste grupo",
'indexdock.hide': "Ocultar até a próxima indexação",
+ 'indexdock.pause': "Pausar a indexação desta pasta",
+ 'indexdock.slow': "Sem resposta do disco há {secs} s: {file}",
'chat.load_older': 'Carregar {n} mensagens anteriores',
'chat.start_of_history': 'Início da conversa',
'chat.today': 'Hoje',
@@ -887,7 +928,7 @@ export default {
'lazy.reload': 'Recarregar a página',
// Sidebar
- 'sidebar.node': 'Node',
+ 'androidsync.title': 'Android Sync',
// Node admin
'node.title': 'Node',
@@ -912,6 +953,7 @@ export default {
'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',
@@ -919,6 +961,12 @@ 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_here': "Vincular este node",
+ 'node.link_not_linked': "A chave deste node não está vinculada à sua conta, então ele não pode servir seus grupos. Vinculá-lo não muda nada nos seus outros nodes.",
+ '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>).',
@@ -937,6 +985,8 @@ export default {
'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_connection_processes': 'Núcleos de CPU para as conexões',
+ 'node.setting_unit_of': 'de {n}',
'node.setting_unit_gb': 'GB',
'node.setting_unit_hours': 'hours',
'node.setting_unit_minutes': 'min',
@@ -950,9 +1000,15 @@ export default {
'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_pause': "Pausar a indexação",
+ 'node.root_resume': "Retomar a indexação",
+ 'node.root_paused': "indexação pausada",
+ 'node.root_stalled': "o disco não responde",
+ 'node.root_stalled_hint': "O node pausou a indexação de {name}: o disco não respondeu em {file}. Verifique o disco, ou tire esse arquivo da pasta, e retome a indexação.",
+ 'node.unread_summary': "Arquivos que não puderam ser lidos: {count}",
+ 'node.unread_no_answer': "sem resposta do disco",
+ 'node.unread_more': "E mais {count}.",
'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.',
@@ -1071,9 +1127,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.',
@@ -1224,6 +1283,7 @@ export default {
'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.",
@@ -1239,15 +1299,119 @@ export default {
'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_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.',
'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.',
+ 'settings.browser_access_off_in_browser': 'O acesso pelo navegador está desativado para esta conta. Ele é ativado no aplicativo de desktop do MeshBay.',
+ 'group.browser_access_off': 'O acesso pelo navegador está desativado para esta conta. Ative-o no aplicativo de desktop do MeshBay (Perfil).',
// Worded by the desktop main process for its own dialogs (main.js).
- 'native.folder_confirm': 'Compartilhar a pasta {path} com os membros de um grupo hospedado neste computador? Ela não foi escolhida no seletor de pastas.',
'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.",
+ '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.",
+ '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.",
};