Files
backspace/packages/web/src/i18n/locales/pt-BR.ts
T
devsyncwrldandClaude Opus 5 94f5da4013
CI / Build & test (Node 20) (push) Canceled after 0s
CI / Build & test (Node 24) (push) Canceled after 0s
CI / Build & test (push) Canceled after 0s
CodeQL / Analyze (javascript-typescript) (push) Canceled after 0s
Security / Secret scan (gitleaks) (push) Canceled after 0s
Security / Dependency scan (OSV-Scanner) (push) Canceled after 0s
Security / IaC/config scan (Trivy) (push) Canceled after 0s
Security / License compliance scan (Trivy) (push) Canceled after 0s
OpenSSF Scorecard / Scorecard analysis (push) Canceled after 0s
feat(i18n): translate five more systems, and unify the permission labels
- Space settings > Overview — identity, icon, banner, transfer, delete
  - Space settings > Members and Bans
  - Space settings > Roles, including the whole permission table
  - Category settings — rename, privacy, overrides, delete
  - Instance settings > General — name, discovery, GIF search

The permission labels were duplicated: the roles panel carried one English
list and the channel/category override editors carried another. Both now
read a single `perm.*` set, so renaming a permission lands in all three at
once instead of one and a half. This removes the `channel.perm.*` keys added
two commits ago rather than adding a third copy beside them.

Same pattern as before for anything chosen outside the render: the roles
panel's permission groups and the category's override definitions hold keys
and resolve them where they render. The category delete dialog emphasises
the category name, so its sentence is split around the placeholder rather
than interpolated.

Dictionary is at 723 keys, en and pt-BR at exact parity.

Verified: web build (tsc + vite), 490 web tests.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-02 20:49:25 -03:00

807 lines
42 KiB
TypeScript

import type { Dictionary } from './en';
/**
* Partial on purpose. Translation happens one system per update, and anything
* absent here falls back to English — so a half-migrated interface is never
* broken, just partly in English.
*/
export const ptBR: Partial<Dictionary> = {
// Configurações — navegação
'settings.tab.account': 'Conta',
'settings.tab.voice': 'Voz e Vídeo',
'settings.tab.privacy': 'Privacidade',
'settings.tab.connections': 'Conexões',
'settings.tab.keybinds': 'Atalhos',
'settings.tab.desktop': 'Desktop',
'settings.tab.instance': 'Instância',
'settings.tab.language': 'Idioma',
// Configurações — idioma
'settings.language.title': 'Idioma',
'settings.language.description': 'Escolha o idioma da interface. O que ainda não foi traduzido continua em inglês.',
'settings.language.en': 'Inglês',
'settings.language.ptBR': 'Português (Brasil)',
// Configurações — voz: entrada
'settings.voice.input.title': 'Dispositivo de entrada',
'settings.voice.input.volume': 'Volume de entrada',
'settings.voice.micTest.start': 'Testar microfone',
'settings.voice.micTest.stop': 'Parar teste',
'settings.voice.micTest.playing': 'Devolvendo seu microfone para você — fale alguma coisa.',
'settings.voice.micTest.inCall': 'O medidor fica ativo enquanto você está numa call.',
'settings.voice.micTest.idle': 'Teste seu microfone sem entrar numa call.',
'settings.voice.micTest.failed': 'Não foi possível abrir o microfone. Verifique o dispositivo e a permissão.',
// Soundboard
'soundboard.title': 'Soundboard',
'soundboard.empty': 'Nenhum som ainda.',
'soundboard.add': 'Adicionar som',
'soundboard.adding': 'Enviando...',
'soundboard.remove': 'Remover',
'soundboard.namePrompt': 'Nome deste som',
'soundboard.confirm': 'Adicionar',
'soundboard.cancel': 'Cancelar',
'soundboard.joinFirst': 'Entre num canal de voz para usar o soundboard.',
'soundboard.tooLarge': 'O som precisa ter menos de 2 MB e poucos segundos.',
'soundboard.uploadFailed': 'Não foi possível enviar esse arquivo. Tente outro.',
// Menu da conta (próprio nome na barra de usuário)
'accountMenu.editProfile': 'Editar perfil',
'accountMenu.status': 'Status',
'accountMenu.status.online': 'Disponível',
'accountMenu.status.idle': 'Ausente',
'accountMenu.status.dnd': 'Não perturbe',
'accountMenu.status.offline': 'Invisível',
'accountMenu.copyId': 'Copiar ID do usuário',
'accountMenu.copied': 'Copiado',
// Notificações no app
'notify.attachment': 'Enviou um anexo',
'notify.jump': 'Abrir',
// Atualização do app
'update.ready': 'Atualização pronta',
'update.readyVersion': 'A versão {version} está pronta para instalar.',
'update.restart': 'Reiniciar para atualizar',
'update.later': 'Depois',
// Emojis e figurinhas
'expressions.title': 'Emojis e figurinhas',
'expressions.emojis': 'Emojis',
'expressions.stickers': 'Figurinhas',
'expressions.addEmoji': 'Adicionar emoji',
'expressions.addSticker': 'Adicionar figurinha',
'expressions.emptyEmojis': 'Nenhum emoji próprio ainda.',
'expressions.emptyStickers': 'Nenhuma figurinha ainda.',
'expressions.namePrompt': 'Nome',
'expressions.nameHintEmoji': 'Letras, números e sublinhado. Usado como :nome: nas mensagens.',
'expressions.confirm': 'Adicionar',
'expressions.cancel': 'Cancelar',
'expressions.remove': 'Remover',
'expressions.tooLarge': 'A imagem precisa ter menos de 512 KB.',
'expressions.uploadFailed': 'Não foi possível adicionar essa imagem. Tente outra.',
'expressions.nameTaken': 'Esse nome já está em uso neste servidor.',
'expressions.uploading': 'Enviando…',
'expressions.pickerTitle': 'Figurinhas',
'expressions.pickerEmpty': 'Este servidor ainda não tem figurinhas.',
// Busca
'search.placeholder': 'Buscar mensagens…',
'search.filters': 'Filtros',
'search.from': 'De',
'search.fromPlaceholder': 'nome de usuário',
'search.has': 'Contém',
'search.hasAny': 'Qualquer',
'search.hasFile': 'Arquivo',
'search.hasImage': 'Imagem',
'search.hasLink': 'Link',
'search.before': 'Antes de',
'search.after': 'Depois de',
'search.hint': 'Dica: digite de:nome, contém:imagem, antes:2026-01-31 direto no campo de busca.',
// Mensagens fixadas
'pins.pin': 'Fixar mensagem',
'pins.unpin': 'Desafixar mensagem',
'pins.title': 'Mensagens fixadas',
'pins.empty': 'Nenhuma mensagem fixada neste canal ainda.',
'pins.limit': 'Este canal atingiu o limite de mensagens fixadas.',
// Barra lateral — servidores, canais e membros
'sidebar.friends': 'Amigos',
'sidebar.directMessages': 'Mensagens diretas',
'sidebar.noChannels': 'Nenhum canal',
'sidebar.comingSoon': 'Em breve',
'sidebar.loadingChannels': 'Carregando canais',
'sidebar.loadingMembers': 'Carregando membros',
'sidebar.groupOnline': 'DISPONÍVEIS',
'sidebar.groupOwner': 'DONO',
'sidebar.createChannel': 'Criar canal',
'sidebar.createCategory': 'Criar categoria',
'sidebar.categorySettings': 'Configurações da categoria',
'sidebar.deleteCategory': 'Excluir categoria',
'sidebar.invitePeople': 'Convidar pessoas',
'sidebar.spaceSettings': 'Configurações do servidor',
'sidebar.leaveGroup': 'Sair do grupo',
'sidebar.voiceSettings': 'Configurações de voz',
'sidebar.inputDevice': 'Dispositivo de entrada',
'sidebar.inputVolume': 'Volume de entrada',
'sidebar.outputDevice': 'Dispositivo de saída',
'sidebar.outputVolume': 'Volume de saída',
// Chat — composer e mensagens
'chat.composer.placeholder': 'Conversar em {channel}',
'chat.composer.attach': 'Anexar arquivo',
'chat.composer.emoji': 'Emoji',
'chat.composer.gif': 'GIF',
'chat.composer.gifPicker': 'Seletor de GIF',
'chat.composer.emojiPicker': 'Seletor de emoji',
'chat.composer.send': 'Enviar',
'chat.composer.sendMessage': 'Enviar mensagem',
'chat.composer.uploading': 'Enviando',
'chat.composer.uploadingEllipsis': 'Enviando…',
'chat.composer.removeAttachment': 'Remover anexo',
'chat.composer.failedAttachment': 'Remova ou tente de novo o anexo que falhou para poder enviar',
'chat.composer.replyingTo': 'Respondendo a',
'chat.composer.cancelReply': 'Cancelar resposta',
'chat.message.addReaction': 'Adicionar reação',
'chat.message.edit': 'Editar',
'chat.message.reply': 'Responder',
// Estatísticas
'stats.title': 'Estatísticas',
'stats.range.7': 'Últimos 7 dias',
'stats.range.30': 'Últimos 30 dias',
'stats.range.365': 'Último ano',
'stats.voice.title': 'Tempo em call',
'stats.messages.title': 'Mensagens enviadas',
'stats.empty': 'Nada registrado neste período ainda.',
'stats.total.voice': '{value} no total',
'stats.total.messages': '{value} mensagens no total',
'stats.hours': '{hours}h {minutes}min',
'stats.minutes': '{minutes}min',
'stats.note': 'A contagem começou quando esta funcionalidade foi instalada — atividade anterior não entra.',
// Registro de auditoria
'audit.title': 'Registro de auditoria',
'audit.empty': 'Nada registrado ainda. Mudanças no servidor aparecem aqui.',
'audit.loadMore': 'Carregar mais',
'audit.unknownActor': 'Conta excluída',
'audit.action.space.update': '{actor} alterou as configurações do servidor',
'audit.action.space.transfer_ownership': '{actor} transferiu a propriedade do servidor',
'audit.action.channel.create': '{actor} criou o canal {name}',
'audit.action.channel.update': '{actor} alterou o canal {name}',
'audit.action.channel.delete': '{actor} excluiu o canal {name}',
'audit.action.member.kick': '{actor} removeu um membro',
'audit.action.member.leave': '{actor} saiu do servidor',
'audit.action.member.ban': '{actor} baniu um membro',
'audit.action.member.unban': '{actor} removeu o banimento de um membro',
'audit.action.role.create': '{actor} criou o cargo {name}',
'audit.action.role.update': '{actor} alterou o cargo {name}',
'audit.action.role.delete': '{actor} excluiu um cargo',
'audit.action.invite.create': '{actor} criou um convite',
'audit.action.message.delete': '{actor} excluiu uma mensagem',
'audit.action.unknown': '{actor} realizou uma ação',
// Seletor de GIF
'gif.search': 'Buscar GIFs',
'gif.tab.favorites': 'Favoritos',
'gif.tab.trending': 'Em alta',
'gif.empty.search': 'Nenhum GIF encontrado',
'gif.empty.trending': 'Nenhum GIF em alta',
'gif.empty.favorites': 'Nenhum favorito ainda — toque na estrela de um GIF.',
'gif.favorite.add': 'Adicionar aos favoritos',
'gif.favorite.remove': 'Remover dos favoritos',
'gif.category.hello': 'oi',
'gif.category.lol': 'risada',
'gif.category.love': 'amor',
'gif.category.birthday': 'feliz aniversário',
'gif.category.dance': 'dança',
'gif.category.facepalm': 'vergonha alheia',
// Configurações — privacidade
'privacy.title': 'Privacidade',
'privacy.discoverable.label': 'Permitir que me encontrem',
'privacy.discoverable.description': 'Quando ativado, seu perfil aparece em Descobrir Pessoas. Qualquer um sempre pode te adicionar pelo nome de usuário exato.',
'privacy.activity.label': 'Compartilhar atividade',
'privacy.activity.description': 'Permite que os outros vejam o que você está fazendo, como jogos que está jogando ou música que está ouvindo.',
// Configurações — conexões
'connections.title': 'Conexões',
'connections.spotify.description': 'Mostre no seu perfil o que você está ouvindo.',
'connections.spotify.connect': 'Conectar Spotify',
'connections.spotify.disconnect': 'Desconectar',
'connections.spotify.connected': 'Conectado',
'connections.spotify.notConfigured': 'Esta instância não tem credenciais do Spotify configuradas.',
'connections.spotify.hint': 'Só é lido o que está tocando — não é possível controlar a reprodução.',
'connections.spotify.error.denied': 'A autorização foi cancelada no Spotify.',
'connections.spotify.error.invalid_state': 'O link de autorização expirou. Tente de novo.',
'connections.spotify.error.exchange_failed': 'O Spotify recusou a autorização. Tente de novo.',
// Cartão de perfil
'profile.aboutMe': 'Sobre mim',
'profile.memberSince': 'Membro desde',
'profile.sendMessage': 'Enviar mensagem',
'profile.activity.playing': 'Jogando',
'profile.activity.listening': 'Ouvindo',
'profile.activity.watching': 'Assistindo',
'profile.activity.streaming': 'Transmitindo',
'profile.activity.elapsed': '{time} decorrido',
// Configurações do canal
'channel.settings.title': 'Configurações do canal',
'channel.tab.overview': 'Visão geral',
'channel.tab.permissions': 'Permissões',
'channel.name.label': 'Nome do canal',
'channel.name.placeholder': 'novo-canal',
'channel.name.willBecome': 'Será salvo como {name}',
'channel.name.empty': 'O nome não pode ficar vazio.',
'channel.topic.label': 'Tópico',
'channel.topic.placeholder': 'Sobre o que é este canal?',
'channel.save': 'Salvar alterações',
'channel.saving': 'Salvando...',
'channel.saved': 'Salvo',
'channel.discard': 'Descartar',
'channel.saveFailed': 'Não foi possível salvar o canal.',
'channel.private.title': 'Canal privado',
'channel.private.description': 'Só os membros e cargos escolhidos vão conseguir ver este canal.',
'channel.private.note': 'Este canal fica escondido de quem não tem acesso explícito. Quem tem a permissão de Administrador e os donos do servidor sempre veem todos os canais.',
'channel.private.loadFailed': 'Não foi possível carregar as permissões do canal',
'channel.private.updateFailed': 'Não foi possível alterar a privacidade do canal',
'channel.danger': 'Zona de perigo',
'channel.delete': 'Excluir canal',
'channel.delete.title': 'Excluir #{name}?',
'channel.delete.body': 'Isto apaga o #{name} e todas as mensagens dele para sempre.',
'channel.delete.voiceNote': 'Quem estiver neste canal de voz agora será desconectado.',
'channel.delete.irreversible': 'Não dá para desfazer.',
'channel.delete.failed': 'Não foi possível excluir o canal',
// Amigos — abas e listas
'friends.title': 'Amigos',
'friends.tab.online': 'Online',
'friends.tab.all': 'Todos',
'friends.tab.pending': 'Pendentes',
'friends.tab.add': 'Adicionar amigo',
'friends.tab.activity': 'Atividade',
'friends.status.online': 'Online',
'friends.status.idle': 'Ausente',
'friends.status.dnd': 'Não perturbe',
'friends.status.offline': 'Offline',
'friends.heading.online': 'Online — {count}',
'friends.heading.all': 'Todos os amigos — {count}',
'friends.heading.pending': 'Pendentes — {count}',
'friends.heading.active': 'Ativos — {count}',
'friends.heading.offline': 'Offline — {count}',
'friends.empty.online': 'Ninguém online agora.',
'friends.empty.all': 'Nenhum amigo ainda — chama alguém!',
'friends.empty.pending': 'Nenhum pedido pendente — o Nori está tirando um cochilo.',
'friends.empty.activity': 'Tudo quieto por aqui... Quando um amigo começar alguma coisa, aparece aqui!',
'friends.request.incoming': 'Pedido de amizade recebido',
'friends.request.outgoing': 'Pedido de amizade enviado',
'friends.action.message': 'Mensagem',
'friends.action.accept': 'Aceitar',
'friends.action.decline': 'Recusar',
'friends.action.cancel': 'Cancelar pedido',
'friends.action.remove': 'Remover amigo',
'friends.remove.title': 'Remover amigo',
'friends.remove.body': 'Quer mesmo remover {name} dos seus amigos? Dá para mandar um novo pedido depois.',
'friends.remove.someone': 'esta pessoa',
'friends.remove.confirm': 'Remover',
// Amigos — aba de adicionar
'friends.add.title': 'Encontrar pessoas',
'friends.add.hint': 'Busque pelo nome de usuário ou use {handle} para adicionar alguém direto.',
'friends.add.searchPlaceholder': 'Buscar ou adicionar por nome de usuário...',
'friends.add.directTo': 'Enviar pedido de amizade para',
'friends.add.send': 'Enviar pedido',
'friends.add.sending': 'Enviando...',
'friends.add.sent': 'Pedido de amizade enviado!',
'friends.add.discover': 'Descobrir pessoas',
'friends.add.empty.search': 'Nenhum usuário encontrado.',
'friends.add.empty.discover': 'Ninguém para descobrir ainda — chame o pessoal!',
'friends.add.sendRequest': 'Enviar pedido de amizade',
'friends.add.cancelling': 'Cancelando...',
'friends.add.pending': 'Pedido pendente',
'friends.add.failed': 'Não foi possível enviar o pedido',
'friends.accept.failed': 'Não foi possível aceitar o pedido',
'friends.decline.failed': 'Não foi possível recusar o pedido',
'friends.cancel.failed': 'Não foi possível cancelar o pedido',
// Lista de membros da DM em grupo
'dm.remove.title': 'Remover do grupo',
'dm.remove.body': 'Remover {name} deste grupo? A pessoa não vai mais ver as mensagens novas.',
'dm.remove.confirm': 'Remover',
'dm.remove.failed': 'Não foi possível remover o membro',
'dm.transfer.title': 'Transferir propriedade',
'dm.transfer.body': 'Transferir a propriedade para {name}? Você perde os privilégios de dono.',
'dm.transfer.confirm': 'Transferir',
'dm.transfer.failed': 'Não foi possível transferir a propriedade',
'dm.removeFriend.failed': 'Não foi possível remover o amigo',
// Modal de convite
'invite.title': 'Convidar amigos',
'invite.subtitle': 'Envie para amigos ou compartilhe um link.',
'invite.requestOnly': 'Este servidor usa pedidos de entrada — as pessoas entram pedindo aprovação a um moderador, então não há link de convite para compartilhar.',
'invite.gotIt': 'Entendi',
'invite.searchPlaceholder': 'Buscar amigos...',
'invite.remove': 'Remover {name}',
'invite.alreadyInSpace': 'Já está no servidor',
'invite.noMatch': 'Nenhum amigo encontrado',
'invite.noFriends': 'Nenhum amigo ainda',
'invite.select': 'Escolha os amigos',
'invite.send': 'Enviar {count} convite',
'invite.sendPlural': 'Enviar {count} convites',
'invite.sending': 'Enviando...',
'invite.sent': 'Enviado',
'invite.retryFailed': 'Tentar de novo',
'invite.done': 'Pronto',
'invite.orLink': 'Ou compartilhe um link',
'invite.generating': 'Gerando...',
'invite.copy': 'Copiar',
'invite.copied': 'Copiado!',
'invite.linkFailed': 'Não foi possível gerar o link de convite',
'invite.fail.invite_invalid': 'O link de convite não vale mais',
'invite.fail.not_a_friend': 'Não é seu amigo',
'invite.fail.user_not_found': 'Usuário não encontrado',
'invite.fail.already_member': 'Já é membro',
'invite.fail.upstream': 'Não deu para verificar o convite — tente de novo',
'invite.fail.cannot_invite_self': 'Você não pode se convidar',
'invite.fail.invalid_body': 'Pedido inválido',
'invite.fail.invalid_target': 'Destino inválido',
'invite.fail.network': 'Não deu para falar com a sua instância',
'invite.fail.generic': 'Não deu para enviar (erro no servidor)',
// Configurações — área de trabalho
'settings.desktop.title': 'Área de trabalho',
'settings.desktop.startAtBoot': 'Abrir junto com o sistema',
'settings.desktop.startAtBoot.description': 'Inicia o Backspace sozinho quando você faz login',
'settings.desktop.startMinimized': 'Abrir minimizado',
'settings.desktop.startMinimized.description': 'Começa escondido na bandeja em vez de abrir a janela',
'settings.desktop.version': 'Versão {version}',
'settings.desktop.appName': 'Backspace Desktop',
'settings.desktop.update.description': 'Procurar versões novas do aplicativo',
'settings.desktop.update.check': 'Procurar atualizações',
'settings.desktop.update.checking': 'Procurando...',
'settings.desktop.instance.current': 'Instância conectada agora',
'settings.desktop.instance.change': 'Trocar de instância',
// Configurações — voz: saída
'settings.output.title': 'Dispositivo de saída',
'settings.output.checking': 'Verificando o acesso ao áudio…',
'settings.output.systemDefault': 'Padrão do sistema',
'settings.output.unsupported': 'Este navegador não deixa escolher o dispositivo de saída. O áudio toca no padrão do sistema.',
'settings.output.needPermission': 'Dê permissão de microfone para listar os dispositivos de saída (os navegadores escondem os nomes de saída atrás do acesso ao microfone).',
'settings.output.enableAccess': 'Liberar acesso ao áudio',
'settings.output.volume': 'Volume de saída',
'settings.output.testSound': 'Tocar som de teste',
// Configurações — atalhos
'settings.keybinds.title': 'Atalhos',
'settings.keybinds.section.voice': 'Atalhos de voz',
'settings.keybinds.pressCombo': 'Aperte a combinação...',
'settings.keybinds.notBound': 'Sem atalho',
'settings.keybinds.edit': 'Editar',
'settings.keybinds.record': 'Gravar',
'settings.keybinds.delete': 'Excluir',
'settings.keybinds.escToCancel': 'ESC para cancelar',
'settings.keybinds.accessibility.title': 'Precisa da permissão de Acessibilidade',
'settings.keybinds.accessibility.description': 'O Backspace precisa da permissão de Acessibilidade para os atalhos funcionarem fora do aplicativo.',
'settings.keybinds.accessibility.grant': 'Conceder permissão',
'settings.keybinds.hookError.title': 'Atalhos globais indisponíveis',
'settings.keybinds.hookError.description': 'Não foi possível iniciar o leitor de entrada. No Linux, talvez o seu usuário precise estar no grupo {group}.',
'settings.keybinds.webNote': 'Os atalhos funcionam enquanto esta aba estiver em foco. Para atalhos que funcionam em outros programas, use o aplicativo.',
'settings.keybinds.conflict.suffix': '. Substituir?',
'settings.keybinds.conflict.boundTo': 'já está ligado a',
'settings.keybinds.conflict.overwrite': 'Substituir',
'settings.keybinds.conflict.cancel': 'Cancelar',
'settings.keybinds.action.toggleMute': 'Ligar/desligar microfone',
'settings.keybinds.action.toggleDeafen': 'Ligar/desligar som',
'settings.keybinds.action.pushToTalk': 'Apertar para falar',
'settings.keybinds.action.toggleCamera': 'Ligar/desligar câmera',
'settings.keybinds.action.toggleScreenShare': 'Ligar/desligar transmissão',
'settings.keybinds.action.disconnect': 'Desconectar',
// Configurações — conta
'settings.account.title': 'Minha conta',
'settings.account.detached.lead': 'Esta conta está desligada da instância de origem.',
'settings.account.detached.body': 'A {instance} foi reiniciada ou não existe mais, então esta conta agora funciona localmente nesta instância — o perfil e a senha são gerenciados aqui.',
'settings.account.detached.relink': 'Como {username} em {instance}, dá para religar esta conta — o perfil e a presença voltam a sincronizar de lá.',
'settings.account.detached.reattaching': 'Religando…',
'settings.account.detached.confirm': 'Confirmar religação como {username}',
'settings.account.detached.reattach': 'Religar a {instance}',
'settings.account.detached.failed': 'Não foi possível religar',
'settings.account.section.profile': 'Personalização do perfil',
'settings.account.section.account': 'Conta',
'settings.account.section.password': 'Senha',
'settings.account.section.danger': 'Zona de perigo',
'settings.account.avatar': 'Foto de perfil',
'settings.account.avatar.change': 'Trocar foto',
'settings.account.banner': 'Banner',
'settings.account.banner.change': 'Trocar banner',
'settings.account.banner.chooseGif': 'Escolher GIF',
'settings.account.remove': 'Remover',
'settings.account.clear': 'Limpar',
'settings.account.avatarColor': 'Cor da foto',
'settings.account.bannerColor': 'Cor do banner',
'settings.account.aboutMe': 'Sobre mim',
'settings.account.aboutMe.placeholder': 'Conte alguma coisa sobre você...',
'settings.account.status': 'Status',
'settings.account.status.online': 'Online',
'settings.account.status.idle': 'Ausente',
'settings.account.status.dnd': 'Não perturbe',
'settings.account.displayName': 'Nome de exibição',
'settings.account.customStatus': 'Status personalizado',
'settings.account.customStatus.placeholder': 'O que você está fazendo?',
'settings.account.password.current': 'Senha atual',
'settings.account.password.current.placeholder': 'Digite a senha atual',
'settings.account.password.new': 'Senha nova',
'settings.account.password.new.placeholder': 'Mínimo de 6 caracteres',
'settings.account.password.confirm': 'Confirmar a senha nova',
'settings.account.password.confirm.placeholder': 'Confirme a senha nova',
'settings.account.password.change': 'Trocar senha',
'settings.account.password.changing': 'Trocando...',
'settings.account.password.changed': 'Senha trocada',
'settings.account.password.tooShort': 'A senha nova precisa ter pelo menos 8 caracteres',
'settings.account.password.mismatch': 'As senhas não batem',
'settings.account.password.failed': 'Não foi possível trocar a senha',
'settings.account.sync.synced': 'Sincronizado',
'settings.account.sync.failed': 'Falhou — sincroniza quando reconectar',
'settings.account.delete.warning': 'Depois de excluir a conta não tem volta. Suas mensagens continuam lá, mas passam a aparecer como "Usuário excluído".',
'settings.account.delete': 'Excluir conta',
'settings.account.reset': 'Desfazer',
'settings.account.save': 'Salvar',
'settings.account.saving': 'Salvando...',
'settings.account.saved': 'Perfil atualizado',
'settings.account.saveFailed': 'Não foi possível atualizar o perfil',
'settings.account.avatar.uploadFailed': 'Não foi possível enviar a foto',
'settings.account.banner.uploadFailed': 'Não foi possível enviar o banner',
'settings.account.crop.avatar': 'Recortar a foto',
'settings.account.crop.banner': 'Recortar o banner',
// Explorar servidores
'explore.title': 'Explorar',
'explore.searchPlaceholder': 'Buscar servidores...',
'explore.disabled': 'A descoberta de servidores está desativada pelo administrador da instância.',
'explore.empty.search': 'Nenhum servidor encontrado.',
'explore.empty.none': 'Nenhum servidor para descobrir ainda.',
'explore.allJoined': 'Você já está em todos os servidores visíveis',
'explore.joined': 'Você participa',
'explore.badge.public': 'Público',
'explore.badge.request': 'Por pedido',
'explore.noDescription': 'Sem descrição',
'explore.member': 'membro',
'explore.members': 'membros',
'explore.view': 'Ver servidor',
'explore.join': 'Entrar no servidor',
'explore.joining': 'Entrando...',
'explore.requestPending': 'Pedido pendente',
'explore.requestToJoin': 'Pedir para entrar',
'explore.request.placeholder': 'Por que você quer entrar? (opcional)',
'explore.request.send': 'Enviar pedido',
'explore.request.sending': 'Enviando...',
'explore.request.cancel': 'Cancelar',
// Configurações — voz: vídeo
'settings.video.title': 'Vídeo',
'settings.video.checking': 'Verificando o acesso à câmera…',
'settings.video.needPermission': 'Dê permissão de câmera para escolher uma.',
'settings.video.promptNeeded': 'Precisa da permissão de câmera para escolher uma e ver a prévia.',
'settings.video.enablePreview': 'Ligar a prévia da câmera',
'settings.video.tryAgain': 'Tentar de novo',
'settings.video.testCamera': 'Testar câmera',
'settings.video.stopPreview': 'Parar prévia',
'settings.video.auto': 'Automático (padrão do sistema)',
'settings.video.currentlyUsing': 'Usando agora: {label}',
'settings.video.detectedCamera': 'câmera detectada',
'settings.video.noCameras': 'Nenhuma câmera detectada.',
'settings.video.error.inUse': 'A câmera está sendo usada por outro programa.',
'settings.video.error.unavailable': 'A câmera escolhida não está disponível.',
'settings.video.error.notFound': 'Nenhuma câmera encontrada.',
'settings.video.error.generic': 'Não foi possível iniciar a prévia da câmera.',
'settings.video.blocked.mac': 'Libere a câmera em Ajustes do Sistema → Privacidade e Segurança → Câmera e reinicie o aplicativo.',
'settings.video.blocked.windows': 'Libere a câmera em Configurações → Privacidade e Segurança → Câmera e reinicie o aplicativo.',
'settings.video.blocked.browser': 'A permissão de câmera foi negada. Redefina no aviso do navegador e tente de novo.',
// Criar canal / categoria / servidor
'create.cancel': 'Cancelar',
'create.creating': 'Criando...',
'create.channel.title': 'Criar canal',
'create.channel.submit': 'Criar canal',
'create.channel.type': 'Tipo de canal',
'create.channel.type.text': 'Texto',
'create.channel.type.voice': 'Voz',
'create.channel.type.text.description': 'Enviar mensagens, imagens e arquivos',
'create.channel.type.voice.description': 'Conversar por voz e vídeo',
'create.channel.name': 'Nome do canal',
'create.channel.name.placeholder': 'novo-canal',
'create.channel.name.required': 'O nome do canal é obrigatório',
'create.channel.topic': 'Tópico (opcional)',
'create.channel.topic.placeholder': 'Sobre o que é este canal?',
'create.channel.category': 'Categoria',
'create.channel.category.none': 'Sem categoria',
'create.channel.failed': 'Não foi possível criar o canal',
'create.category.title': 'Criar categoria',
'create.category.submit': 'Criar categoria',
'create.category.name': 'Nome da categoria',
'create.category.name.placeholder': 'nova-categoria',
'create.category.name.required': 'O nome da categoria é obrigatório',
'create.category.failed': 'Não foi possível criar a categoria',
'create.noSpace': 'Nenhum servidor selecionado',
'create.space.title': 'Criar um servidor',
'create.space.submit': 'Criar',
'create.space.upload': 'Enviar',
'create.space.remove': 'Remover',
'create.space.iconColor': 'Cor do ícone',
'create.space.name': 'Nome do servidor',
'create.space.name.placeholder': 'Meu servidor incrível',
'create.space.name.required': 'O nome do servidor é obrigatório',
'create.space.description': 'Descrição',
'create.space.description.placeholder': 'Uma descrição curta do seu servidor...',
'create.space.visibility': 'Visibilidade',
'create.space.visibility.private': 'Privado',
'create.space.visibility.private.description': 'Só entra quem tiver um link de convite',
'create.space.visibility.request': 'Por pedido',
'create.space.visibility.request.description': 'Aparece no Explorar — as pessoas pedem para entrar',
'create.space.visibility.public': 'Público',
'create.space.visibility.public.description': 'Aparece no Explorar — qualquer um entra na hora',
'create.space.iconFailed': 'Não foi possível enviar o ícone',
'create.space.failed': 'Não foi possível criar o servidor',
'create.space.cropIcon': 'Recortar o ícone do servidor',
// DMs em grupo
'groupDm.newDm.title': 'Nova mensagem direta',
'groupDm.newDm.search': 'Buscar um usuário...',
'groupDm.newDm.failed': 'Não foi possível criar a DM',
'groupDm.add.title': 'Adicionar amigos à DM',
'groupDm.add.search': 'Buscar amigos...',
'groupDm.add.alreadyIn': 'Já está nesta DM',
'groupDm.add.noMatch': 'Nenhum amigo encontrado',
'groupDm.add.noFriends': 'Nenhum amigo ainda',
'groupDm.add.select': 'Escolha os amigos',
'groupDm.add.submit': 'Adicionar {count} amigo',
'groupDm.add.submitPlural': 'Adicionar {count} amigos',
'groupDm.add.adding': 'Adicionando...',
'groupDm.add.failed': 'Não foi possível adicionar os membros',
'groupDm.fallbackName': 'DM em grupo',
'groupDm.icon.change': 'Trocar o ícone do grupo',
'groupDm.icon.label': 'Ícone do grupo',
'groupDm.icon.crop': 'Recortar o ícone do grupo',
'groupDm.name': 'Nome do grupo',
'groupDm.tab.general': 'Geral',
'groupDm.tab.overview': 'Visão geral',
'groupDm.tab.members': 'Membros',
'groupDm.back': 'Voltar ao menu de configurações do grupo',
'groupDm.save': 'Salvar',
'groupDm.saving': 'Salvando...',
'groupDm.cancel': 'Cancelar',
'groupDm.close': 'Fechar',
'groupDm.saveFailed': 'Não foi possível salvar as configurações',
'groupDm.members.title': 'Membros',
'groupDm.members.add': 'Adicionar membro',
'groupDm.members.full': 'O grupo está cheio',
'groupDm.leave': 'Sair do grupo',
'groupDm.leaving': 'Saindo...',
'groupDm.leave.description': 'Você para de receber as mensagens desta conversa. Os outros membros veem um aviso.',
'groupDm.leave.confirm': 'Sair de "{name}"? Você para de receber as mensagens desta conversa.',
'groupDm.leave.button': 'Sair',
'groupDm.leave.failed': 'Não foi possível sair do grupo',
// Entrar num servidor
'join.title': 'Entrar num servidor',
'join.discover.lead': 'Descubra servidores para entrar, ou veja todos no Explorar.',
'join.discover.error': 'Não deu para carregar os servidores agora. Você ainda pode entrar com um código de convite abaixo.',
'join.discover.empty': 'Nenhum servidor para descobrir ainda — tente um código de convite abaixo, ou volte mais tarde.',
'join.discover.browse': 'Ver todos no Explorar',
'join.haveCode': 'Tem um código de convite?',
'join.code.placeholder': 'ex.: abc123 ou https://instancia.com/join/abc123',
'join.cancel': 'Cancelar',
'join.back': 'Voltar',
'join.submit': 'Entrar no servidor',
'join.joining': 'Entrando...',
'join.failed': 'Não foi possível entrar no servidor',
'join.connect.lead': 'Conecte-se a {host} para entrar neste servidor.',
'join.connect.password': 'Digite a sua senha para conectar',
'join.connect.password.placeholder': 'A senha da sua conta',
'join.connect.note': 'A sua senha é verificada aqui e depois usada para criar ou acessar a sua conta na outra instância.',
'join.connect.submit': 'Conectar e entrar',
'join.connect.connecting': 'Conectando...',
'join.fallback.lead': 'Já existe uma conta em {host} com outra senha. Digite os dados que você usou naquela instância.',
'join.fallback.username': 'Nome de usuário',
'join.fallback.username.placeholder': 'Seu nome de usuário nessa instância',
'join.fallback.password': 'Senha desta instância',
'join.fallback.password.placeholder': 'Senha na instância remota',
'join.fallback.submit': 'Entrar e participar',
'join.fallback.loggingIn': 'Entrando...',
// Excluir conta / transferir propriedade / tela de erro
'danger.delete.title': 'Excluir conta',
'danger.delete.lead': 'Isto apaga a sua conta para sempre.',
'danger.delete.item.spaces': 'Você sai de todos os servidores',
'danger.delete.item.friends': 'Todas as amizades são desfeitas',
'danger.delete.item.dms': 'Você sai de todas as DMs',
'danger.delete.item.messages': 'Suas mensagens continuam, mas passam a aparecer como "Usuário excluído"',
'danger.delete.owned': 'Você é dono de {count} servidor. Resolva antes de continuar:',
'danger.delete.ownedPlural': 'Você é dono de {count} servidores. Resolva cada um antes de continuar:',
'danger.delete.transfer': 'Transferir',
'danger.delete.deleteSpace': 'Excluir servidor',
'danger.delete.selectOwner': 'Escolha o novo dono...',
'danger.delete.continue': 'Continuar',
'danger.delete.processing': 'Processando...',
'danger.delete.spacesFailed': 'Não foi possível resolver os servidores',
'danger.delete.permanent': 'Isto é permanente e não dá para desfazer.',
'danger.delete.password': 'Senha',
'danger.delete.password.placeholder': 'Digite a sua senha',
'danger.delete.back': 'Voltar',
'danger.delete.confirm': 'Excluir minha conta',
'danger.delete.deleting': 'Excluindo...',
'danger.delete.usernameMismatch': 'O nome de usuário não confere',
'danger.delete.failed': 'Não foi possível excluir a conta',
'danger.delete.federating': 'Removendo a sua conta das instâncias conectadas...',
'danger.delete.now': 'Excluir a conta agora',
'danger.delete.done': 'Conta excluída',
'danger.delete.redirecting': 'Voltando para a tela de login...',
'danger.transfer.title': 'Transferir propriedade',
'danger.transfer.lead': 'Escolha quem vai ser o novo dono de {space}',
'danger.transfer.confirm': 'Transferir a propriedade de {space} para {member}?',
'danger.transfer.note': 'Você passa a ser um membro comum.',
'danger.transfer.search': 'Buscar membros...',
'danger.transfer.loading': 'Carregando membros...',
'danger.transfer.empty': 'Nenhum membro encontrado',
'danger.transfer.cancel': 'Cancelar',
'danger.transfer.submit': 'Transferir',
'danger.transfer.transferring': 'Transferindo...',
'danger.transfer.failed': 'Não foi possível transferir a propriedade',
'error.title': 'Alguma coisa deu errado',
'error.tryAgain': 'Tentar de novo',
'error.reload': 'Recarregar a página',
// Rótulos de permissão — usados pelo painel de cargos e pelos editores de
// exceção de canal e categoria, então renomear aqui vale nos três.
'perm.group.general': 'Geral',
'perm.group.text': 'Texto',
'perm.group.voice': 'Voz',
'perm.administrator': 'Administrador',
'perm.viewChannel': 'Ver canal',
'perm.viewChannels': 'Ver canais',
'perm.manageChannels': 'Gerenciar canais',
'perm.manageRoles': 'Gerenciar cargos',
'perm.manageSpace': 'Gerenciar servidor',
'perm.createInvite': 'Criar convite',
'perm.kickMembers': 'Expulsar membros',
'perm.banMembers': 'Banir membros',
'perm.sendMessages': 'Enviar mensagens',
'perm.manageMessages': 'Gerenciar mensagens',
'perm.attachFiles': 'Anexar arquivos',
'perm.readHistory': 'Ler histórico de mensagens',
'perm.addReactions': 'Adicionar reações',
'perm.connect': 'Conectar',
'perm.speak': 'Falar',
'perm.stream': 'Transmitir',
'perm.muteMembers': 'Silenciar membros',
'perm.deafenMembers': 'Ensurdecer membros',
'perm.moveMembers': 'Mover membros',
'perm.disconnectMembers': 'Desconectar membros',
// Configurações do servidor — visão geral
'space.overview.title': 'Visão geral',
'space.overview.identity': 'Identidade do servidor',
'space.overview.icon': 'Ícone do servidor',
'space.overview.iconAlt': 'Ícone do servidor',
'space.overview.iconColor': 'Cor do ícone',
'space.overview.banner': 'Banner do servidor',
'space.overview.bannerAlt': 'Banner do servidor',
'space.overview.bannerUpload': 'Enviar banner (16:9)',
'space.overview.bannerRemove': 'Remover banner',
'space.overview.remove': 'Remover',
'space.overview.name': 'Nome do servidor',
'space.overview.save': 'Salvar',
'space.overview.saving': 'Salvando...',
'space.overview.discard': 'Descartar',
'space.overview.saved': 'Configurações salvas',
'space.overview.saveFailed': 'Não foi possível salvar',
'space.overview.iconFailed': 'Não foi possível enviar o ícone',
'space.overview.bannerFailed': 'Não foi possível enviar o banner',
'space.overview.cropIcon': 'Recortar o ícone do servidor',
'space.overview.cropBanner': 'Recortar o banner do servidor',
'space.overview.danger': 'Zona de perigo',
'space.overview.transfer.description': 'Passe a propriedade para outro membro. Você vira um membro comum.',
'space.overview.transfer.button': 'Transferir propriedade',
'space.overview.transfer.confirm': 'Transferir a propriedade para',
'space.overview.transfer.search': 'Buscar membros...',
'space.overview.transfer.empty': 'Nenhum membro encontrado',
'space.overview.transfer.back': 'Voltar',
'space.overview.transfer.cancel': 'Cancelar',
'space.overview.transfer.submit': 'Transferir',
'space.overview.transfer.transferring': 'Transferindo...',
'space.overview.transfer.failed': 'Não foi possível transferir a propriedade',
'space.overview.delete.description': 'Apaga este servidor e todos os dados dele para sempre. Não dá para desfazer.',
'space.overview.delete': 'Excluir servidor',
'space.overview.delete.confirm': 'Clique de novo para confirmar',
'space.overview.delete.failed': 'Não foi possível excluir o servidor',
// Configurações do servidor — membros e banimentos
'space.members.title': 'Membros',
'space.members.description': 'Gerencie os membros do servidor. Clique num membro para editar os cargos dele.',
'space.members.count': 'Membros ({count})',
'space.members.noRoles': 'Sem cargo',
'space.members.save': 'Salvar',
'space.members.cancel': 'Cancelar',
'space.members.kick': 'Expulsar',
'space.members.ban': 'Banir',
'space.members.kick.title': 'Expulsar {name}',
'space.members.kick.description': 'A pessoa pode voltar com um link de convite.',
'space.members.ban.title': 'Banir {name}',
'space.members.ban.description': 'A pessoa fica banida deste servidor até alguém desfazer o banimento.',
'space.members.rolesFailed': 'Não foi possível atualizar os cargos',
'space.members.kickFailed': 'Não foi possível expulsar o membro',
'space.members.banFailed': 'Não foi possível banir o membro',
'space.bans.title': 'Banimentos',
'space.bans.count': 'Banimentos ({count})',
'space.bans.description': 'Quem está banido não consegue voltar até alguém desfazer o banimento.',
'space.bans.loading': 'Carregando banimentos...',
'space.bans.empty': 'Ninguém banido',
'space.bans.by': 'Banido por {moderator} em {date}',
'space.bans.unban': 'Desfazer banimento',
'space.bans.loadFailed': 'Não foi possível carregar os banimentos',
'space.bans.unbanFailed': 'Não foi possível desfazer o banimento',
// Configurações do servidor — cargos
'space.roles.title': 'Cargos',
'space.roles.description': 'Os cargos definem o que cada membro pode fazer. Cargos mais altos têm prioridade.',
'space.roles.create': 'Criar cargo',
'space.roles.creating': 'Criando...',
'space.roles.createFailed': 'Não foi possível criar o cargo',
'space.roles.created': 'Cargo criado — ajuste abaixo',
'space.roles.back': 'Voltar aos cargos',
'space.roles.identity': 'Identidade',
'space.roles.name': 'Nome do cargo',
'space.roles.name.empty': 'O nome do cargo não pode ficar vazio',
'space.roles.color': 'Cor do cargo',
'space.roles.save': 'Salvar',
'space.roles.saving': 'Salvando...',
'space.roles.saved': 'Cargo salvo',
'space.roles.saveFailed': 'Não foi possível salvar o cargo',
'space.roles.discard': 'Descartar',
'space.roles.copy': 'Duplicar cargo',
'space.roles.copying': 'Duplicando...',
'space.roles.copyFailed': 'Não foi possível duplicar o cargo',
'space.roles.delete': 'Excluir cargo',
'space.roles.deleting': 'Excluindo...',
'space.roles.deleteConfirm': 'Confirma?',
'space.roles.deleteFailed': 'Não foi possível excluir o cargo',
// Configurações da categoria
'category.settings.title': 'Configurações da categoria',
'category.tab.overview': 'Visão geral',
'category.tab.permissions': 'Permissões',
'category.label': 'Categoria',
'category.private.title': 'Categoria privada',
'category.private.description': 'Só os membros e cargos escolhidos vão ver os canais desta categoria.',
'category.private.note': 'Esta categoria fica escondida de quem não tem acesso explícito. Os canais dentro dela herdam essa restrição, a menos que definam a sua própria.',
'category.private.loadFailed': 'Não foi possível carregar as permissões da categoria',
'category.private.updateFailed': 'Não foi possível alterar a privacidade da categoria',
'category.renameFailed': 'Não foi possível renomear a categoria',
'category.danger': 'Zona de perigo',
'category.delete': 'Excluir categoria',
'category.delete.title': 'Excluir "{name}"?',
'category.delete.body': 'Isto apaga a categoria {name} para sempre. Os canais dentro dela vão para o nível de cima. Não dá para desfazer.',
'category.delete.failed': 'Não foi possível excluir a categoria',
// Configurações da instância — geral
'instance.general.title': 'Geral',
'instance.general.description': 'Configure a sua instância do Backspace. Estas opções valem para todo mundo.',
'instance.general.loading': 'Carregando configurações...',
'instance.general.name': 'Nome da instância',
'instance.general.name.description': 'O nome que aparece na tela de login e para as instâncias federadas.',
'instance.general.discovery': 'Descoberta',
'instance.general.discovery.title': 'Descoberta de servidores',
'instance.general.discovery.description': 'Permite que os servidores apareçam na página pública do Explorar',
'instance.general.gif': 'Busca de GIFs',
'instance.general.gif.description': 'Liga a busca de GIFs pelo Klipy. Pegue uma chave de API gratuita no portal de desenvolvedores do Klipy.',
'instance.general.gif.keySaved': 'Chave salva — digite outra para substituir',
'instance.general.gif.keyPlaceholder': 'Chave de API do Klipy',
'instance.general.gif.enabled': 'Ligado',
'instance.general.gif.notConfigured': 'Não configurado',
'instance.general.gif.clearKey': 'Apagar a chave',
'instance.general.save': 'Salvar',
'instance.general.saving': 'Salvando...',
'instance.general.reset': 'Desfazer',
'instance.general.saved': 'Configurações salvas',
'instance.general.saveFailed': 'Não foi possível salvar',
};