pt.yml 1020 lignes · 48878 octets
# Traduções portuguesas — rustwarden-ui
# Seções: login, páginas de usuário, admin, navegação

# Acesso
login:
  title: "Entrar"
  page_title: "Entrar"
  page_description: "Acesso à sua conta"
  subtitle: "Acesse sua conta"
  username: "Nome de usuário ou email"
  password: "Senha"
  submit: "Entrar"
  remember_me: "Lembrar-me"
  tab_login: "Entrar"
  tab_register: "Registrar"
  register_title: "Criar uma conta"
  register_submit: "Criar minha conta"
  username_placeholder: "Nome de usuário ou email"
  password_placeholder: "Sua senha"
  username_placeholder_register: "Seu nome de usuário (mín. 3 caracteres)"
  username_pattern_register: "Apenas minúsculas, números e hífens, de 3 a 39 caracteres"
  password_placeholder_register: "Sua senha (mín. 8 caracteres)"
  email_placeholder: "seu@email.com"
  forgot_password: "Esqueceu a senha?"
  email_not_verified: "Email não verificado?"
  resend_verification: "Reenviar o email de verificação"
  already_have_account: "Já tem uma conta?"
  sign_in_link: "Entrar"
  success_message: "Login realizado com sucesso! Redirecionando..."
  error_message: "Erro de login. Verifique suas credenciais."
  email_unverified_message: "Seu email não está verificado. Clique abaixo para reenviar o link."
  resend_button: "Reenviar o email de verificação"
  resend_success: "Email de verificação reenviado se a conta existir."
  resend_error: "Não foi possível enviar a solicitação no momento."
  resend_prompt: "Insira seu email antes de reenviar."
  register_success: "Conta criada com sucesso! Verifique seu email."
  register_error: "Erro durante o registro"
  email_label: "Email"
  footer_text: "Contas e autenticação"

# Pedido de link de redefinição
forgot_password:
  page_title: "Senha esquecida"
  title: "Senha esquecida"
  subtitle: "Insira seu endereço de email. Se existir uma conta, um link de redefinição será enviado."
  email_label: "Endereço de email"
  email_placeholder: "voce@exemplo.com"
  submit: "Enviar o link"
  back_to_login: "Voltar ao login"
  error_default: "Não foi possível enviar a solicitação."
  success_default: "Se existir uma conta para este endereço, um email de redefinição foi enviado."
  error_missing_email: "Insira seu email."
  error_cannot_send: "Não foi possível enviar a solicitação no momento."

# Reenvio de email de verificação
resend_verification:
  page_title: "Reenviar o email de verificação - RustWarden"
  title: "Reenviar o email de verificação"
  subtitle: "Insira seu endereço de email para receber um novo link de verificação."
  email_label: "Endereço de email"
  email_placeholder: "voce@exemplo.com"
  submit: "Enviar o link de verificação"
  back_to_login: "Voltar ao login"
  error_default: "Não foi possível enviar a solicitação."
  success_default: "Se a conta existir e não estiver verificada, um email foi enviado."
  error_missing_email: "Insira seu email."
  error_cannot_send: "Não foi possível enviar a solicitação no momento."

# Redefinição de senha (via link de email)
password_reset:
  page_title: "Redefinir a senha"
  title: "Redefinir a senha"
  subtitle: "Insira sua nova senha abaixo."
  new_password_label: "Nova senha"
  new_password_placeholder: "Nova senha segura"
  requirements: "⚠️ Deve conter: 8+ caracteres, maiúscula, minúscula, dígito, caractere especial"
  confirm_password_label: "Confirmar senha"
  confirm_password_placeholder: "Confirme sua nova senha"
  missing_token_url: "Token de redefinição ausente na URL."
  missing_token: "Token de redefinição ausente."
  missing_new_password: "Insira uma nova senha."
  passwords_not_match: "As senhas não correspondem."
  success_message: "Sua senha foi redefinida com sucesso. Agora você pode entrar."
  error_link_invalid: "Não foi possível redefinir a senha. O link pode ter expirado ou ser inválido."
  error_generic: "Não foi possível redefinir a senha no momento."

# Página de login 2FA
login_2fa:
  page_title: "Verificação 2FA"
  title: "Verificação em duas etapas"
  subtitle: "Insira o código do seu aplicativo de autenticação"
  code_label: "Código de autenticação"
  backup_code_label: "Código de backup"
  verify_button: "Verificar"
  use_backup_code: "Usar um código de backup"
  use_totp_code: "Usar o código do aplicativo"
  back_to_login: "Voltar ao login"
  error_invalid_code: "Código inválido. Tente novamente."
  error_network: "Erro de rede. Tente novamente."

# Segurança 2FA
settings_security:
  page_title: "Segurança - RustWarden"
  title: "Autenticação de dois fatores"
  subtitle: "Proteja sua conta com uma camada adicional de segurança"
  totp_title: "Autenticação TOTP"
  status_enabled: "Ativada"
  status_disabled: "Desativada"
  enabled_message: "Sua conta está protegida pela autenticação de dois fatores."
  disabled_message: "Adicione uma camada extra de segurança à sua conta ativando a autenticação de dois fatores por meio de um aplicativo como Google Authenticator ou Authy."
  enable_button: "Ativar 2FA"
  disable_button: "Desativar 2FA"
  scan_qr: "Escaneie este código QR com seu aplicativo de autenticação"
  manual_entry: "Ou insira este código manualmente"
  enter_code: "Insira o código de 6 dígitos do seu aplicativo"
  verify_button: "Verificar e ativar"
  backup_codes_title: "Códigos de backup"
  backup_codes_warning: "Guarde estes códigos em um lugar seguro. Cada código pode ser usado apenas uma vez."
  backup_codes_remaining: "Códigos de backup restantes"
  regenerate_button: "Regenerar códigos"
  regenerate_confirm: "Tem certeza? Os códigos antigos serão substituídos."
  confirm_disable: "Insira sua senha para desativar o 2FA"
  password_label: "Senha atual"
  copy_button: "Copiar"
  saved_codes_button: "Salvei meus códigos"
  breadcrumb: "Segurança"
  force_2fa_message: "O administrador exige a autenticação de dois fatores. Você deve configurar o 2FA antes de poder acessar o restante da aplicação."
  force_2fa_logout: "Sair"

# Configurações
settings:
  title: "Configurações"
  page_title: "Configurações - RustWarden"
  subtitle: "Gerencie suas preferências e configurações de conta"
  profile_title: "Meu Perfil"
  profile_desc: "Edite suas informações pessoais (nome de usuário, email)"
  password_title: "Senha"
  password_desc: "Altere sua senha para proteger sua conta"
  sessions_title: "Sessões ativas"
  sessions_desc: "Gerencie suas sessões ativas e revogue o acesso de outros dispositivos"
  preferences_title: "Preferências"
  preferences_desc: "Personalize sua experiência (tema, idioma)"
  access: "Acessar"
  info_title: "Informações"
  info_desc: "Use as seções acima para gerenciar os diferentes aspectos da sua conta. Todas as alterações são seguras e requerem sua autenticação."
  language: "Idioma"
  language_description: "Escolha seu idioma preferido"
  save: "Salvar"
  saved: "Configurações salvas"

# Página principal
home:
  welcome: "Bem-vindo, {username}!"
  subtitle: "Bem-vindo ao seu espaço pessoal"
  my_account: "Minha Conta"
  stat_username: "Nome de usuário"
  stat_email: "Email"
  stat_member_since: "Membro desde"
  stat_roles: "Funções"

# Preferências
preferences:
  title: "Preferências de exibição"
  page_title: "Preferências de exibição"
  subtitle: "Personalize a aparência da interface"
  theme: "Tema"
  theme_light: "Claro"
  theme_light_desc: "Interface clara e limpa"
  theme_dark: "Escuro"
  theme_dark_desc: "Reduz o cansaço visual"
  theme_auto: "Automático"
  theme_auto_desc: "Adapta-se à hora do dia"
  theme_preview: "O tema será aplicado imediatamente após salvar"
  language: "Idioma"
  language_fr: "Français"
  language_fr_desc: "Interface em francês"
  language_en: "English"
  language_en_desc: "Interface em inglês"
  language_de: "Deutsch"
  language_de_desc: "Interface em alemão"
  language_es: "Español"
  language_es_desc: "Interface em espanhol"
  language_it: "Italiano"
  language_it_desc: "Interface em italiano"
  language_pt: "Português"
  language_pt_desc: "Interface em português"
  translation_warning: "A tradução completa da interface está em desenvolvimento. Alguns elementos podem permanecer em francês."
  modified: "Preferências modificadas"
  modified_desc: "Salve as alterações para aplicá-las"
  save: "Salvar preferências"
  saving: "Salvando..."
  cancel: "Cancelar"
  saved_success: "Preferências salvas com sucesso!"
  saved_reload: "Preferências salvas com sucesso!\n\nO idioma foi alterado. Deseja recarregar a página agora para aplicar as alterações?"
  error: "Erro: {message}"
  network_error: "Erro de rede. Tente novamente."
  sync_title: "Suas preferências estão sincronizadas"
  sync_desc: "Suas preferências de exibição estão salvas e se aplicam automaticamente em todos os dispositivos conectados à sua conta."
  preview_dark: "Prévia: Tema escuro será aplicado"
  preview_light: "Prévia: Tema claro será aplicado"
  preview_auto: "Prévia: Tema automático será aplicado"

# Perfil
profile:
  title: "Meu Perfil"
  page_title: "Meu Perfil"
  subtitle: "Edite suas informações pessoais"
  account_info: "Informações da conta"
  username: "Nome de usuário"
  username_public: "Visível publicamente"
  username_placeholder: "Seu nome de usuário"
  username_pattern: "Apenas minúsculas, números e hífens, de 3 a 39 caracteres"
  email: "Email"
  email_placeholder: "seu@email.com"
  save: "Salvar alterações"
  saving: "Salvando..."
  saved: "Perfil atualizado com sucesso"
  error: "Erro ao atualizar o perfil"
  email_label: "Endereço de email"
  email_used_for: "Usado para login"
  email_warning: "O endereço atual não é alterado aqui."
  email_change_info: "Um link de confirmação é enviado ao novo endereço. O endereço atual recebe um aviso. A conta só muda após a confirmação."
  email_change_title: "Alterar o endereço de email"
  new_email_label: "Novo endereço"
  current_password_label: "Senha atual"
  request_button: "Pedir a alteração"
  email_change_error: "Não foi possível enviar a solicitação."
  network_error: "Erro de rede. Tente novamente."
  username_help: "De 3 a 39 caracteres (a-z, 0-9, -)"
  additional_info: "Informações adicionais"
  account_created: "Conta criada em"
  roles: "Funções"
  linked_accounts_title: "Contas vinculadas"
  no_linked_accounts: "Nenhuma conta externa vinculada."
  linked_since: "Vinculado desde"
  unlink_button: "Desvincular"
  unlink_confirm: "Tem certeza de que deseja desvincular esta conta?"
  unlink_error: "Não foi possível desvincular esta conta."
  cannot_unlink_last: "Não é possível remover o último método de autenticação."

# Breadcrumb
breadcrumb:
  home: "Home"
  settings: "Configurações"
  admin: "Administração"
  preferences: "Preferências"
  profile: "Perfil"
  password: "Senha"
  users: "Usuários"
  sessions: "Sessões"

# Admin
admin:
  dashboard:
    title: "Administração"
    heading: "Painel de controle do Administrador"
    users_card_title: "Usuários"
    users_card_subtitle: "Total de usuários"
    access_button: "Acessar"
    sessions_card_title: "Sessões ativas"
    sessions_card_subtitle: "Sessões em andamento"
    admins_card_title: "Administradores"
    admins_card_subtitle: "Contas admin"
    last_activity_card_title: "Última atividade"
    last_activity_card_subtitle: "Último acesso"
    audit_section_title: "Estatísticas de log de auditoria"
    audit_total_logs: "Total de logs"
    audit_last_24h: "Últimas 24h"
    audit_by_level: "Por nível"
    chart_label: "Logs por nível"
    view_logs: "Ver os logs"
    logs_card_title: "Logs de auditoria"
    logs_card_desc: "Últimas ações registradas: alterações de email, logins bloqueados."
    roles_card_title: "Gerenciamento de Funções"
    roles_card_desc: "Gerencie as funções e permissões granulares"
    roles_stat_title: "Funções"
    settings_card_title: "Configurações da Aplicação"
    settings_card_desc: "Configure as configurações globais da aplicação"
    apps_card_title: "Gerenciamento de Aplicações"
    apps_card_desc: "Ative ou desative as aplicações modulares"
    orgs_card_title: "Gerenciamento de Organizações"
    orgs_card_desc: "Crie e gerencie organizações e seus membros"
    orgs_stat_title: "Organizações"
    orgs_members_stat_title: "Membros totais"
  logs:
    page_title: "Logs de auditoria"
    heading: "Logs de auditoria"
    empty: "Nenhuma entrada por enquanto."
    col_date: "Data"
    col_level: "Nível"
    col_action: "Ação"
    col_message: "Mensagem"
  roles_list:
    page_title: "Gerenciamento de funções"
    breadcrumb_roles: "Funções"
    title: "Funções"
    create_role: "Criar uma função"
    table_name: "Nome"
    table_description: "Descrição"
    table_users: "Usuários"
    table_permissions: "Permissões"
    table_actions: "Ações"
    edit: "Editar"
    delete: "Excluir"
    no_roles: "Nenhuma função encontrada."
    protected_hint: "Protegida"
    delete_confirm_title: "Confirmar exclusão"
    delete_confirm_message: "Tem certeza de que deseja excluir a função"
    delete_button: "Excluir"
  role_form:
    title_create: "Criar uma função"
    title_edit: "Editar função"
    breadcrumb_create: "Criar"
    breadcrumb_edit: "Editar"
    back_to_list: "Voltar à lista"
    name_label: "Nome da função"
    name_placeholder: "ex: moderador"
    description_label: "Descrição"
    description_placeholder: "Descrição da função..."
    permissions_label: "Permissões"
    protected_name_hint: "O nome desta função não pode ser alterado."
    cancel: "Cancelar"
    submit_create: "Criar função"
    submit_edit: "Salvar alterações"
  errors:
    title: "Códigos de Erro"
    description: "Documentação dos códigos de erro da aplicação. Cada código de erro está associado a um middleware e fornece informações de contexto para depuração."
    breadcrumb_errors: "Códigos de Erro"
    table_code: "Código"
    table_description: "Descrição"
    table_category: "Categoria"
    table_middleware: "Middleware"
    table_context: "Contexto"
    table_example: "Exemplo"
    legend_title: "Legenda"
    legend_code: "Identificador único do erro (formato: CATEGORY_NUMBER)"
    legend_description: "Descrição do erro"
    legend_category: "Tipo de erro (Autenticação, CSRF, Rate Limiting, etc.)"
    legend_middleware: "Middleware responsável pela geração deste erro"
    legend_context: "Explicação detalhada de quando este erro ocorre"
    legend_example: "Exemplo concreto de situação que gera este erro"
    error_auth001_desc: "Credenciais inválidas"
    error_auth001_category: "Autenticação"
    error_auth001_context: "O usuário forneceu credenciais incorretas durante o login"
    error_auth001_example: "Tentativa de login com senha incorreta"
    error_auth002_desc: "Token inválido"
    error_auth002_category: "Autenticação"
    error_auth002_context: "O token JWT fornecido é inválido ou malformado"
    error_auth002_example: "Token JWT corrompido ou assinado com uma chave diferente"
    error_auth003_desc: "Token expirado"
    error_auth003_category: "Autenticação"
    error_auth003_context: "O token JWT expirou e deve ser renovado"
    error_auth003_example: "Tentativa de acesso com token expirado após o período de validade"
    error_csrf001_desc: "Token CSRF ausente"
    error_csrf001_category: "Proteção CSRF"
    error_csrf001_context: "A requisição POST/PUT/DELETE não contém um token CSRF"
    error_csrf001_example: "Formulário enviado sem token CSRF no header ou no body"
    error_csrf002_desc: "Token CSRF inválido"
    error_csrf002_category: "Proteção CSRF"
    error_csrf002_context: "O token CSRF fornecido não corresponde ao token da sessão"
    error_csrf002_example: "Token CSRF modificado ou roubado"
    error_rate001_desc: "Limite de taxa excedido"
    error_rate001_category: "Rate Limiting"
    error_rate001_context: "O número de requisições por minuto foi excedido"
    error_rate001_example: "Mais de 100 requisições/min nos endpoints admin"
    error_valid001_desc: "Dados de entrada inválidos"
    error_valid001_category: "Validação"
    error_valid001_context: "Os dados fornecidos não respeitam as regras de validação"
    error_valid001_example: "Email em formato inválido ou campo obrigatório ausente"
    error_valid002_desc: "Complexidade de senha não respeitada"
    error_valid002_category: "Validação"
    error_valid002_context: "A senha não respeita as regras de complexidade configuradas"
    error_valid002_example: "Senha muito curta ou sem os caracteres exigidos"
    error_rbac001_desc: "Permissões insuficientes"
    error_rbac001_category: "Autorização"
    error_rbac001_context: "O usuário não tem as permissões necessárias para esta ação"
    error_rbac001_example: "Usuário não admin tentando acessar /admin/users"
    error_rbac002_desc: "Função de administrador necessária"
    error_rbac002_category: "Autorização"
    error_rbac002_context: "A ação requer a função de administrador"
    error_rbac002_example: "Tentativa de exclusão de usuário sem função admin"
    error_db001_desc: "Erro na operação do banco de dados"
    error_db001_category: "Banco de dados"
    error_db001_context: "Uma operação do banco de dados falhou"
    error_db001_example: "Restrição de chave estrangeira violada ou conexão com DB perdida"
    error_db002_desc: "Recurso não encontrado"
    error_db002_category: "Banco de dados"
    error_db002_context: "O recurso solicitado não existe no banco de dados"
    error_db002_example: "Usuário com ID inexistente"
  user_form:
    breadcrumb_create: "Criar"
    breadcrumb_edit: "Editar"
    title_create: "Criar um usuário"
    title_edit: "Editar um usuário"
    back_to_list: "Voltar à lista"
    username_label: "Nome de usuário"
    username_placeholder: "nome-usuario"
    username_pattern: "Apenas minúsculas, números e hífens, de 3 a 39 caracteres"
    username_readonly_hint: "O nome de usuário não pode ser alterado após a criação"
    email_label: "Email"
    email_placeholder: "usuario@exemplo.com"
    email_change_hint: "Alterar o endereço grava-o de imediato, marca o email como verificado e encerra as sessões deste usuário."
    password_label: "Senha"
    password_optional: "Opcional"
    password_placeholder: "Deixe em branco para gerar uma senha aleatória"
    password_hint: "Se deixado em branco, uma senha segura será gerada automaticamente"
    roles_label: "Funções"
    roles_hint: "Selecione pelo menos uma função"
    must_change_password_label: "Forçar alteração de senha"
    must_change_password_desc: "O usuário deverá alterar a senha no próximo acesso"
    cancel: "Cancelar"
    submit_create: "Criar usuário"
    submit_edit: "Salvar alterações"
  settings:
    title: "Configurações da Aplicação"
    page_title: "Configurações da Aplicação - Admin"
    subtitle: "Configuração global da aplicação"
    general: "Geral"
    app_name: "Nome da aplicação"
    app_domain: "Domínio"
    app_domain_placeholder: "exemplo.com"
    app_description: "Descrição"
    allow_registration: "Permitir registro"
    allow_registration_desc: "Os usuários podem criar contas na página principal"
    email_validation_required: "Validação de email obrigatória"
    email_validation_required_desc: "Os usuários devem validar seu email antes de acessar"
    save: "Salvar configurações"
    cancel: "Cancelar"
    saved: "Configurações salvas com sucesso"
    error: "Erro ao salvar"
    network_error: "Erro de rede. Tente novamente."
    password_security: "Segurança das Senhas"
    password_min_length: "Comprimento mínimo"
    password_min_length_hint: "Entre 6 e 128 caracteres"
    password_complexity: "Requisitos de complexidade"
    require_uppercase: "Maiúscula obrigatória"
    require_lowercase: "Minúscula obrigatória"
    require_digits: "Dígito obrigatório"
    require_special: "Caractere especial obrigatório"
    password_change_require_email: "Confirmação por email da alteração de senha"
    password_change_require_email_desc: "Quando ativado, um email de confirmação é enviado para validar qualquer alteração de senha. Caso contrário, a alteração é aplicada imediatamente."
    password_expiration: "Expiração de senhas"
    password_expiration_desc: "Força a troca periódica"
    expiration_days: "Expirar após (dias)"
    expiration_alert: "Aviso por email antes da expiração"
    expiration_alert_days: "Aviso (dias antes)"
    audit_logging: "Registro de Auditoria"
    log_level: "Nível de log"
    log_level_debug: "DEBUG - Todos os detalhes"
    log_level_info: "INFO - Informações normais"
    log_level_warn: "WARN - Apenas avisos"
    log_level_error: "ERROR - Apenas erros"
    log_level_hint: "Controla a verbosidade dos logs de auditoria"
    log_retention: "Retenção de logs (dias)"
    log_retention_hint: "Período de retenção dos logs (1-365 dias)"
    audit_info_message: "Os logs de auditoria registram todas as ações administrativas (criação, edição, exclusão de usuários)."
    save_changes: "Salvar alterações"
    save_changes_desc: "As configurações serão aplicadas imediatamente"
    saving: "Salvando..."
    save_success: "Configurações salvas com sucesso!"
    save_error_prefix: "Erro"
    oauth_sso_title: "OAuth / SSO"
    oauth_enabled_label: "Ativar OAuth"
    oauth_enabled_desc: "Permitir login via provedores externos (Google, GitHub, etc.)"
    oauth_redirect_url_label: "URL de redirecionamento base"
    oauth_redirect_url_desc: "URL base para callbacks OAuth (ex: https://minhaapp.exemplo.com)"
    oauth_auto_register_label: "Auto-registro"
    oauth_auto_register_desc: "Criar automaticamente uma conta se o email não existir"
    oauth_link_existing_label: "Vincular contas existentes"
    oauth_link_existing_desc: "Vincular automaticamente uma conta OAuth se o email verificado corresponder"
    oauth_client_id: "Client ID"
    oauth_client_secret: "Client Secret"
    oauth_tenant: "Tenant ID"
    oauth_redirect_uri: "URI de redirecionamento"
    oauth_copy_uri: "Copiar"
    oauth_secret_configured: "Configurado"
    oauth_secret_not_configured: "Não configurado"
    oauth_secret_change: "Alterar"
    oauth_restart_warning: "Alterações nas credenciais requerem reinicialização da aplicação."
    oauth_env_info: "As credenciais também podem ser configuradas via variáveis de ambiente (OAUTH_*_CLIENT_ID, etc.)."
    oauth_google_label: "Google"
    oauth_google_desc: "OpenID Connect"
    oauth_github_label: "GitHub"
    oauth_github_desc: "OAuth2"
    oauth_discord_label: "Discord"
    oauth_discord_desc: "OAuth2"
    oauth_microsoft_label: "Microsoft"
    oauth_microsoft_desc: "OpenID Connect"
    # Audience measurement. The script URL is read-only here: it feeds
    # the CSP, which is frozen at startup (see config::analytics).
    analytics_title: 'Medição de audiência'
    analytics_desc: 'Script de rastreamento de terceiros injetado nas páginas. O endereço do script é configurado por variável de ambiente; as definições abaixo aplicam-se sem reiniciar.'
    analytics_enabled_label: 'Ativar a medição de audiência'
    analytics_enabled_desc: 'Quando desativado, nenhum script de rastreamento é enviado aos visitantes.'
    analytics_site_id_label: 'Identificador do site'
    analytics_site_id_desc: 'Fornecido pelo seu serviço de medição de audiência.'
    analytics_attributes_label: 'Atributos adicionais'
    analytics_attributes_desc: 'Um objeto JSON de atributos data-*, por exemplo um par data-consent / opt-in.'
    analytics_script_url_label: 'Endereço do script'
    analytics_script_url_desc: 'Apenas leitura: este endereço alimenta a Content Security Policy, fixada no arranque. Configure-o através de ANALYTICS_SCRIPT_URL.'
    analytics_not_configured: 'Nenhum script de medição de audiência está configurado. Defina ANALYTICS_SCRIPT_URL e reinicie a aplicação para ativar esta secção.'
  users_list:
    page_title: "Gerenciamento de Usuários - Admin"
    title: "Gerenciamento de Usuários"
    breadcrumb_users: "Usuários"
    create_user: "Criar um usuário"
    search_label: "Buscar"
    search_placeholder: "Nome de usuário ou email..."
    role_filter_label: "Função"
    all_roles: "Todas as funções"
    per_page_label: "Por página"
    search_button: "Buscar"
    results_summary: "Exibindo {count} usuário(s) de {total} no total"
    page_info: "Página {page} de {total_pages}"
    table_username: "Nome de usuário"
    table_email: "Email"
    table_roles: "Funções"
    table_created_at: "Criado em"
    table_last_login: "Último acesso"
    table_actions: "Ações"
    never: "Nunca"
    edit: "Editar"
    delete: "Excluir"
    reset_password: "Redefinir senha"
    no_users: "Nenhum usuário encontrado"
    reset_password_title: "Redefinir senha"
    reset_generate: "Gerar uma senha aleatória"
    reset_custom: "Definir uma senha personalizada"
    reset_email: "Redefinir via email"
    reset_new_password_label: "Nova senha"
    reset_new_password_placeholder: "Mínimo 8 caracteres, maiúscula, minúscula, dígito, caractere especial"
    reset_password_requirements: "⚠️ Deve conter: 8+ caracteres, maiúscula, minúscula, dígito, caractere especial"
    reset_invalidate_sessions: "Invalidar todas as sessões ativas deste usuário"
    reset_invalidate_sessions_desc: "O usuário precisará se reconectar após a alteração"
    reset_button: "Redefinir"
    delete_confirm_title: "⚠️ Confirmar exclusão"
    delete_confirm_message: "Tem certeza de que deseja excluir este usuário?"
    delete_confirm_username: "Nome de usuário:"
    delete_confirm_email: "Email:"
    delete_irreversible: "Esta ação é irreversível!"
    delete_button: "Excluir permanentemente"
    edit_user_title: "Editar usuário"
    delete_error: "Erro ao excluir o usuário"
    network_error: "Erro de rede"
    resetting: "Redefinindo..."
    reset_by_email_title: "Redefinição via email"
    close: "Fechar"
    password_reset_success_title: "Senha redefinida"
    password_warning_once: "Esta senha será exibida apenas uma vez. Copie agora!"
    new_password_label: "Nova senha"
    copy: "Copiar"
    password_copied: "Senha copiada para a área de transferência"
    password_set_success: "Senha redefinida com sucesso"
    reset_error: "Erro ao redefinir a senha"

# Alteração de senha
password:
  title: "Alterar minha senha"
  page_title: "Alterar minha senha"
  subtitle: "Altere sua senha para proteger sua conta. Um email de confirmação será enviado para validar a alteração."
  subtitle_no_email: "Altere sua senha para proteger sua conta."
  must_change_message: "⚠️ Você deve alterar sua senha antes de continuar."
  new_password: "Nova senha"
  current_password: "Senha atual"
  current_password_placeholder: "Sua senha atual"
  new_password_placeholder: "Nova senha segura"
  required: "Obrigatório"
  requirements: "📌 Respeite os requisitos de complexidade indicados abaixo."
  strength: "Força da senha:"
  strength_weak: "Fraca"
  strength_medium: "Média"
  strength_strong: "Forte ✓"
  strength_too_short: "muito curta"
  strength_missing_lowercase: "minúscula ausente"
  strength_missing_uppercase: "maiúscula ausente"
  strength_missing_digit: "dígito ausente"
  strength_missing_special: "caractere especial ausente"
  confirm_password: "Confirmar a nova senha"
  confirm_password_placeholder: "Repita a nova senha"
  passwords_match: "✓ As senhas correspondem"
  passwords_not_match: "✗ As senhas não correspondem"
  change_button: "Alterar senha"
  changing: "Alterando..."
  logout_warning_title: "Desconexão das outras sessões"
  logout_warning_desc: "Todas as suas outras sessões ativas serão automaticamente desconectadas após a alteração de senha. Apenas sua sessão atual permanecerá ativa."
  save: "Salvar a nova senha"
  saving: "Salvando..."
  saved: "Um email de confirmação foi enviado para seu endereço. Clique no link no email para validar a alteração de senha."
  saved_direct: "Senha alterada com sucesso! Suas outras sessões foram desconectadas."
  error: "Erro ao alterar a senha"
  error_all_fields_required: "Todos os campos são obrigatórios."
  error_empty_data: "Os dados a enviar estão vazios."
  error_invalid_data: "Dados inválidos. Verifique se todos os campos estão preenchidos."
  error_incorrect_current: "Senha atual incorreta."
  error_reading_response: "Erro ao ler a resposta do servidor"
  error_415: "Erro 415: O servidor não recebeu os dados no formato JSON esperado. Tente novamente."
  network_error: "Erro de rede. Tente novamente."
  security_tips_title: "Dicas de segurança"
  security_tip_unique: "Use uma senha única que não use em outro lugar"
  security_tip_share: "Nunca compartilhe sua senha com ninguém"
  security_tip_regular: "Altere sua senha regularmente (a cada 3-6 meses)"
  security_tip_2fa: "Ative a autenticação de dois fatores se disponível"
  security_tip_manager: "Use um gerenciador de senhas para maior segurança"
  pending_request_message: "⚠️ Uma solicitação de alteração de senha aguarda confirmação por email."
  pending_request_info: "Um email de confirmação foi enviado para seu endereço. Clique no link no email para confirmar a alteração."
  pending_request_cancel: "Cancelar a solicitação pendente"
  pending_request_canceled: "Solicitação cancelada com sucesso"
  pending_request_cancel_error: "Erro ao cancelar a solicitação"
  confirmation_sent: "Email de confirmação enviado! Verifique sua caixa de entrada."
  confirmation_error: "Erro ao enviar o email de confirmação"

# Sessões
sessions:
  title: "Sessões ativas"
  page_title: "Sessões ativas"
  subtitle: "Gerencie os dispositivos conectados à sua conta"
  current_session: "Sessão atual"
  current_badge: "Atual"
  unknown_device: "Dispositivo desconhecido"
  ip_address: "Endereço IP:"
  created_at: "Criada em:"
  last_activity: "Última atividade:"
  session_id: "ID da Sessão:"
  revoke: "Revogar"
  revoke_confirm: "Tem certeza de que deseja revogar a sessão para \"{device}\"?\n\nEste dispositivo será desconectado imediatamente."
  revoke_success: "Sessão revogada com sucesso!"
  revoke_error: "Erro ao revogar a sessão"
  no_sessions: "Nenhuma sessão ativa"
  no_sessions_desc: "Você não tem sessões ativas no momento"
  danger_zone: "Zona de perigo"
  danger_zone_desc: "Desconecte todos os outros dispositivos em uma única ação (sua sessão atual permanecerá ativa)."
  revoke_all: "Revogar todas as outras sessões"
  revoke_all_confirm: "⚠️ ATENÇÃO\n\nTem certeza de que deseja revogar TODAS as suas outras sessões?\n\nTodos os seus outros dispositivos serão desconectados. Apenas sua sessão atual permanecerá ativa."
  revoke_all_success: "Todas as outras sessões foram revogadas!"
  revoke_all_error: "Erro ao revogar. Algumas sessões podem não ter sido revogadas."
  about_title: "Informações sobre sessões"
  about_desc: "Uma sessão é criada toda vez que você acessa de um dispositivo ou navegador diferente. Revogar uma sessão desconecta imediatamente esse dispositivo. Sua sessão atual não pode ser revogada nesta página (saia para fazer isso)."
  back_to_settings: "Voltar às configurações"

# Menu de navegação (navbar)
nav:
  home: "Home"
  settings: "Configurações"
  admin: "Administração"

# Menu do usuário
user_menu:
  profile: "Perfil"
  logout: "Sair"
  settings: "Configurações"

# Organizações
organisations:
  list:
    title: "Gerenciamento de Organizações"
    create: "Criar uma organização"
    search: "Buscar"
    search_placeholder: "Nome ou descrição..."
    no_organisations: "Nenhuma organização encontrada"
    results_summary: "Resultados"
    manage_members: "Gerenciar membros"
    table:
      name: "Nome"
      description: "Descrição"
      members: "Membros"
      created_at: "Criada em"
      actions: "Ações"
  create:
    title: "Criar uma organização"
    submit: "Criar"
    success: "Organização criada com sucesso"
    error:
      already_exists: "A organização '{gid}' já existe"
      invalid_gid: "Formato de gid inválido: {gid}"
      generic: "Ocorreu um erro ao criar a organização"
  edit:
    title: "Editar a organização"
    submit: "Salvar"
  update:
    success: "Organização atualizada com sucesso"
  delete:
    success: "Organização excluída com sucesso"
    confirm: "Tem certeza de que deseja excluir esta organização? Esta ação é irreversível."
  form:
    name_label: "Nome"
    name_placeholder: "Nome da organização"
    description_label: "Descrição"
    description_placeholder: "Descrição da organização (opcional)"
    gid_label: "Identificador (GID)"
    gid_placeholder: "identificador-unico"
    gid_help: "Identificador único (letras, números, sublinhados, máx. 64 caracteres)"
  members:
    title: "Membros da organização"
    add_member: "Adicionar um membro"
    search_user_label: "Buscar um usuário"
    search_user_placeholder: "Nome de usuário ou email..."
    no_members: "Nenhum membro nesta organização"
    back_to_list: "Voltar à lista"
    table:
      username: "Nome de usuário"
      role: "Função"
      joined_at: "Ingressou em"
      actions: "Ações"
    add_success: "Membro adicionado com sucesso"
    remove_success: "Membro removido com sucesso"
    add_error: "Erro ao adicionar o membro"
    remove_error: "Erro ao remover o membro"
    user_not_found: "Usuário '{search}' não encontrado"
    error:
      organisation_not_found: "Organização '{gid}' não encontrada"
      already_member: "Este usuário já é membro da organização"

# Compartilhamento
sharing:
  modal:
    title: "Compartilhar um recurso"
    resource_label: "Recurso"
    resource_type_label: "Tipo"
    expiration_label: "Data de expiração (opcional)"
    expiration_help: "O compartilhamento expirará automaticamente nesta data"
    cancel_button: "Cancelar"
    submit_button: "Compartilhar"
    close_button: "Fechar"
    success_message: "Compartilhamento criado com sucesso"
    error_message: "Erro ao criar o compartilhamento"
    error:
      already_exists: "Este compartilhamento já existe para este recurso e esta organização"
  components:
    share_button_label: "Compartilhar"
    permissions_label: "Permissões"
    permissions_help: "Escolha as permissões concedidas para este compartilhamento"
    share_with_label: "Compartilhar com"
    user_tab_label: "Usuário"
    organisation_tab_label: "Organização"
    select_user_label: "Selecionar um usuário"
    search_user_placeholder: "Buscar um usuário..."
    select_organisation_label: "Selecionar uma organização"
    select_organisation_placeholder: "Escolha uma organização..."
    no_organisations_message: "Nenhuma organização disponível"
  permissions:
    read_only: "Somente leitura"
    read_only_value: "1"
    read_only_description: "Pode apenas consultar o recurso"
    read_write: "Leitura + Escrita"
    read_write_value: "3"
    read_write_description: "Pode consultar e modificar o recurso"
    all: "Todas as permissões"
    all_value: "15"
    all_description: "Pode consultar, modificar, excluir e compartilhar"

# Federação ActivityPub - RFC 0021 fundações admin
fediverse:
  settings:
    title: "Configurações de federação"
    breadcrumb: "Federação"
    heading: "Configurações de federação ActivityPub"
    subtitle: "Ative e configure a federação com outras instâncias Rustwarden e servidores compatíveis com ActivityPub. Funcionalidade experimental."
    card_activation: "Ativação"
    card_trust: "Confiança"
    card_interop: "Interoperabilidade"
    card_security: "Segurança avançada"
    enabled_label: "Ativar a federação ActivityPub (experimental)"
    enabled_desc: "Quando desativada, as rotas /admin/fediverse/* exceto esta página retornam 404."
    trust_mode_label: "Modo de confiança"
    trust_mode_allowlist: "Lista de permissão (zero-trust, recomendado)"
    trust_mode_open: "Aberto com lista de bloqueio (estilo Mastodon)"
    interop_scope_label: "Escopo de interoperabilidade"
    interop_scope_rustwarden_only: "Apenas Rustwarden (recusa cortês das outras instâncias)"
    interop_scope_rustwarden_plus: "Rustwarden + leitura universal"
    interop_scope_open: "Aberto (qualquer instância ActivityPub)"
    authorized_fetch_label: "Authorized-fetch"
    authorized_fetch_desc: "Exigir uma assinatura HTTP para recuperar um ator remoto. Ativar após auditoria."
    save_button: "Salvar"
    saved_toast: "Configurações salvas."
  trust:
    title: "Domínios de confiança"
    breadcrumb: "Confiança"
    heading: "Lista de confiança da federação"
    subtitle: "Gerencie os domínios aceitos ou bloqueados para a federação ActivityPub. O modo ativo (lista de permissão ou lista de bloqueio) é definido na página Configurações de federação."
    mode_allowlist: "Modo lista de permissão (zero-trust)"
    mode_blocklist: "Modo lista de bloqueio (estilo Mastodon)"
    add_legend: "Adicionar um domínio"
    domain_label: "Domínio"
    domain_placeholder: "exemplo.tld"
    note_label: "Nota (opcional)"
    reason_label: "Motivo do bloqueio (opcional)"
    severity_label: "Severidade"
    severity_suspend: "Suspender (recusa total)"
    severity_silence: "Silenciar (filtragem discreta)"
    severity_reject_auth: "Recusar apenas a autenticação"
    add_button: "Adicionar"
    table_domain: "Domínio"
    table_note_or_reason: "Nota / Motivo"
    table_severity: "Severidade"
    table_created_at: "Adicionado em"
    table_actions: "Ações"
    delete_button: "Excluir"
    delete_confirm_title: "Confirmar exclusão"
    delete_confirm_body: "Esta ação é irreversível. O domínio abaixo será removido da lista ativa."
    modal_cancel: "Cancelar"
    modal_confirm: "Confirmar exclusão"
    empty_title: "Lista vazia"
    empty_body: "Nenhum domínio configurado. Adicione um para começar a federar."
    saved_toast: "Lista atualizada."
  auth:
    error:
      page_title: "Erro de autenticação federada"
      subtitle: "Ocorreu um erro durante a autenticação ActivityPub."
      back_to_login: "Voltar ao login"
      timeout:
        title: "Tempo limite excedido"
        body: "Sua instância de origem não respondeu a tempo. Verifique se está acessível e tente novamente em alguns instantes."
      rejected:
        title: "Solicitação recusada"
        body: "Sua instância de origem recusou a solicitação de autenticação. Se você não iniciou esta tentativa, pode ignorá-la com segurança."
      untrusted:
        title: "Domínio não autorizado"
        body: "O domínio da sua identidade não está na lista de confiança desta instância. Entre em contato com o administrador se acredita ser um engano."
      invalid_signature:
        title: "Assinatura inválida"
        body: "A assinatura da sua instância de origem não pôde ser verificada. Isso pode indicar uma má configuração ou uma tentativa maliciosa."
      unknown:
        title: "Erro desconhecido"
        body: "Ocorreu um erro inesperado. Tente novamente ou entre em contato com o administrador se o problema persistir."
    login:
      page_title: "Login ActivityPub"
      subtitle: "Conecte-se com uma identidade hospedada em outra instância federada."
      heading: "Conectar-se com uma identidade ActivityPub"
      field_label: "Identidade"
      field_placeholder: "@user@instancia.tld"
      field_help: "Formato Mastodon: @ seguido do nome de usuário, depois @, depois o domínio da instância."
      submit: "Continuar"
      back_to_login: "Voltar ao login clássico"
    waiting:
      page_title: "Autenticação em andamento"
      subtitle: "Aguarde enquanto sua instância de origem valida a solicitação."
      heading: "Autenticação em andamento…"
      explainer: "Sua instância de origem precisa confirmar sua identidade. Esta página será atualizada automaticamente assim que uma resposta chegar (até 5 minutos)."
      cancel: "Cancelar"
    consent:
      page_title: "Confirmar um login federado"
      heading: "Uma instância está solicitando uma autenticação"
      explainer: "Uma instância federada quer autenticá-lo do lado dela. Verifique o domínio e a identidade abaixo antes de aprovar."
      label_requester: "Domínio solicitante"
      label_handle: "Identidade envolvida"
      approve: "Aprovar"
      reject: "Recusar"
      already_decided: "Esta solicitação já foi processada."
  queue:
    title: "Fila de saída da federação"
    breadcrumb: "Fila de saída"
    heading: "Entregas de saída"
    subtitle: "Painel das atividades ActivityPub a distribuir para instâncias remotas. Últimas 100 linhas exibidas."
    stats_pending: "Pendentes"
    stats_delivered: "Entregues"
    stats_failed: "Falhas"
    stats_dead: "Mortas"
    table_activity: "Atividade"
    table_target: "Destino"
    table_status: "Status"
    table_attempts: "Tentativas"
    table_last_error: "Último erro"
    table_next_retry: "Próxima tentativa"
    table_created_at: "Criada em"
    empty_title: "Fila vazia"
    empty_body: "Nenhuma atividade de saída. O worker está saudável ou a federação ainda não produziu atividade."
  sessions_remote:
    title: "Sessões remotas"
    breadcrumb: "Sessões remotas"
    heading: "Sessões remotas ativas"
    subtitle: "Identidades federadas que contataram esta instância e não estão desativadas. Revogar = marcar como desabilitada (as sessões JWT remotas correspondentes serão recusadas)."
    kill_switch_legend: "Kill switch por domínio"
    kill_switch_label: "Desativar todas as identidades de um domínio"
    kill_switch_button: "Desativar o domínio"
    kill_switch_confirm_title: "Confirmar o kill switch"
    kill_switch_confirm_body: "Todas as identidades federadas do domínio abaixo serão marcadas como desabilitadas. Esta ação é irreversível pela UI (um novo login federado recriará a linha)."
    table_handle: "Handle"
    table_display_name: "Nome exibido"
    table_domain: "Domínio"
    table_last_seen: "Visto pela última vez"
    table_actions: "Ações"
    revoke_button: "Revogar"
    revoke_confirm_title: "Confirmar a revogação"
    revoke_confirm_body: "Esta identidade será marcada como desabilitada. A próxima verificação JWT remota a recusará."
    modal_cancel: "Cancelar"
    modal_confirm: "Confirmar"
    empty_title: "Sem sessões remotas"
    empty_body: "Nenhuma identidade federada contatou ainda esta instância, ou todas foram desativadas."
    saved_toast: "Ação realizada."
  admin:
    tabs:
      settings: "Configurações"
      trust_list: "Lista de confiança"
      queue: "Fila de envio"
      sessions_remote: "Sessões remotas"
      nodeinfo: "NodeInfo"
      invites: "Convites"
    hub:
      title: "Federação ActivityPub"
      subtitle: "Painel de controle centralizado para gerenciar a federação com outras instâncias Rustwarden e compatíveis com ActivityPub."
      card:
        settings:
          title: "Configurações"
          desc: "Ativar a federação, escolher o modo de confiança, o escopo de interoperabilidade e o authorized-fetch."
        trust_list:
          title: "Lista de confiança"
          desc: "Gerenciar domínios aceitos (allowlist) ou bloqueados (blocklist)."
        queue:
          title: "Fila de envio"
          desc: "Painel de operador para a fila de entrega de saída (RFC 0011 + RFC 0019)."
        sessions_remote:
          title: "Sessões remotas"
          desc: "Identidades federadas ativas, kill switch por identidade ou por domínio."
        nodeinfo:
          title: "NodeInfo"
          desc: "Estatísticas humanizadas da instância federada (NodeInfo 2.1)."
        invites:
          title: "Convites"
          desc: "Convidar uma conta remota para se juntar a uma equipe (visão por equipe)."
    teams_for_invites:
      title: "Escolher uma equipe para gerenciar seus convites"
      breadcrumb: "Convites"
      heading: "Convites federados por equipe"
      subtitle: "Selecione uma equipe para visualizar e criar convites para contas remotas."
      empty_title: "Nenhuma equipe"
      empty_body: "Crie primeiro uma equipe para poder convidar contas federadas."

# Estatísticas NodeInfo (RFC 0024 Slice C iter. 3). Namespace de nível
# superior dedicado para não reabrir `fediverse:` (que sobrescreveria
# settings/trust/auth/queue/sessions_remote sob yaml-rust2).
fediverse_nodeinfo:
  title: "NodeInfo - Estatísticas da federação"
  breadcrumb: "NodeInfo"
  heading: "NodeInfo - Estatísticas humanizadas"
  subtitle: "Visão geral da configuração runtime + estatísticas de usuários locais e identidades remotas."
  card_software: "Software"
  card_runtime: "Configuração runtime"
  card_users: "Usuários locais"
  card_remotes: "Identidades remotas"
  label_name: "Nome"
  label_version: "Versão"
  label_domain: "Domínio"
  label_enabled: "Federação ativada"
  label_trust_mode: "Modo de confiança"
  label_interop_scope: "Escopo interop"
  label_authorized_fetch: "Authorized-fetch"
  label_users_total: "Total"
  label_users_active_month: "Ativos 30 dias"
  label_users_active_halfyear: "Ativos 180 dias"
  label_remote_identities_active: "Ativas"
  label_remote_distinct_domains: "Domínios distintos"

# Convites de equipe entre instâncias (RFC 0024 Slice C iter. 4).
fediverse_invites:
  title: "Convites de equipe federada"
  breadcrumb: "Convites"
  heading: "Convites entre instâncias"
  subtitle: "Convide uma identidade ActivityPub para se juntar à equipe:"
  add_legend: "Convidar por handle"
  handle_label: "Handle do usuário"
  handle_placeholder: "@user@instancia.tld"
  role_label: "Função"
  role_member: "Membro"
  role_admin: "Administrador"
  role_owner: "Proprietário"
  add_button: "Enviar o convite"
  table_handle: "Handle convidado"
  table_role: "Função"
  table_status: "Status"
  table_created_at: "Enviado em"
  table_actions: "Ações"
  revoke_button: "Revogar"
  revoke_confirm_title: "Confirmar a revogação"
  revoke_confirm_body: "O convite será cancelado. Se já foi aceito, a identidade será removida da equipe pelo sinal Revoke{Membership} (RFC 0010)."
  modal_cancel: "Cancelar"
  modal_confirm: "Confirmar"
  empty_title: "Sem convites"
  empty_body: "Nenhum convite foi enviado ainda para esta equipe."
  saved_toast: "Ação realizada."

# Apps federadas conectadas (RFC 0024 Slice C iter. 5).
fediverse_connected_apps:
  page_title: "Apps federadas conectadas"
  heading: "Minhas apps federadas conectadas"
  subtitle: "Instâncias ActivityPub onde você se autenticou usando sua identidade deste servidor."
  table_domain: "Instância"
  table_count: "Sessões"
  table_last_seen: "Última atividade"
  empty_title: "Sem apps federadas"
  empty_body: "Você ainda não aprovou nenhuma autenticação federada para outra instância."
  revoke_note: "Nota: a revogação manual de uma sessão remota por esta página estará disponível com a RFC 0006 Fase 2 (lista negra de JWT remoto). Enquanto isso, peça ao administrador via /admin/fediverse/sessions_remote ou aguarde a expiração natural do JWT."
  back_to_profile: "Voltar ao perfil"

# Aceitação de convite de equipe entre instâncias (RFC 0024 Slice C iter. 6).
fediverse_invite_landing:
  page_title: "Convite de equipe"
  heading: "Você recebeu um convite"
  explainer: "Uma equipe de outra instância federada está convidando você a entrar. Verifique os detalhes abaixo antes de responder."
  team_label: "Equipe"
  role_label: "Função proposta"
  status_label: "Status"
  accept_button: "Aceitar"
  reject_button: "Recusar"
  already_decided: "Este convite já foi processado."
  cannot_accept_note: "Para aceitar, você deve estar conectado por meio de uma identidade federada (login da sua instância de origem). Pode recusar desta conta local, mas a aceitação passa pelo fluxo AP-nativo."

# Página 404 (rota desconhecida)
http_errors:
  not_found_title: "Página não encontrada"
  not_found_message: "Este endereço não corresponde a nenhuma página."
  code_label: "Erro 404"
  home: "Voltar ao início"
  login: "Entrar"

analytics:
  opt_out:
    hint: 'Pode opor-se à medição de audiência a qualquer momento. A sua escolha é guardada no navegador e tem efeito no próximo carregamento da página.'
    opt_out_label: 'Opor-me à medição de audiência'
    opt_in_label: 'Reativar a medição de audiência'
    opted_out_badge: 'Está excluído'