{
"forms": {
"upload_dir_error": "Erro ao criar o diretório de upload",
"file_create_error": "Erro ao criar o arquivo",
"multipart_stream_error": "Erro no stream multipart",
"file_write_error": "Erro ao escrever o arquivo",
"required": "Este campo é obrigatório",
"too_short": "Muito curto (mín {})",
"too_long": "Muito longo (máx {})",
"email_invalid": "Formato de endereço de e-mail inválido",
"url_invalid": "Por favor, insira uma URL válida",
"hash_error": "Erro de hash: {}",
"password_empty": "A senha não pode estar vazia",
"filter_invalid_value": "O filtro static/media recebeu um valor inválido ({}) em vez de um caminho de arquivo.",
"number_invalid": "Número inválido",
"number_required": "Obrigatório",
"integer_required": "Deve ser um número inteiro",
"decimal_required": "Deve estar no formato decimal",
"min_value": "Mín {} requerido",
"max_value": "Máx {} excedido",
"precision_max": "Precisão máxima {} dígitos após a vírgula",
"precision_min": "Precisão mínima {} dígitos após a vírgula",
"color_invalid": "Cor inválida (formato: #RRGGBB ou #RGB)",
"color_no_hash": "A cor deve começar com #",
"color_bad_hex": "Contém caracteres não hexadecimais",
"slug_invalid": "Slug inválido",
"slug_no_dash": "O slug não deve começar ou terminar com um hífen",
"uuid_invalid": "Formato UUID inválido (esperado: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx)",
"json_invalid": "JSON inválido: {}",
"ipv4_only": "Apenas endereços IPv4 são aceitos",
"ipv6_only": "Apenas endereços IPv6 são aceitos",
"ip_invalid": "Endereço IP inválido",
"date_invalid": "Formato de data inválido",
"date_too_old": "Muito antigo (mín: {})",
"date_too_far": "Muito distante (máx: {})",
"time_invalid": "Formato de hora inválido",
"file_required": "Por favor selecione pelo menos um arquivo",
"file_extension_blocked": "Arquivo '{}' não permitido. Extensões: {}",
"finalize_error": "Erro ao finalizar o campo '{}': {}",
"template_missing": "Template ausente: {}",
"render_js_error": "Erro ao renderizar JS: {}",
"tera_not_configured": "Tera não configurado",
"config_not_found": "Configuração não encontrada nas extensões",
"hint_slug": "Formato: letras-números-hífens",
"hint_uuid": "Formato: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"hint_json": "Formato JSON válido requerido",
"hint_ip_v4": "Formato IPv4: 192.168.1.1",
"hint_ip_v6": "Formato IPv6: 2001:0db8:85a3::8a2e:0370:7334",
"hint_ip": "Formato IPv4 ou IPv6",
"validation_overflow": "Stack overflow detectado: recursão infinita na validação",
"choice_invalid": "Opção inválida",
"choice_invalid_value": "Opção inválida: {}",
"select_required": "Por favor selecione uma opção",
"checkbox_required": "Por favor selecione pelo menos uma opção",
"multipart_error": "Erro multipart",
"body_error": "Erro ao ler o body",
"aegis_query_error": "Falha ao analisar query string: {}",
"aegis_urlencoded_error": "Falha ao analisar o body urlencoded: {}",
"aegis_json_error": "Falha ao analisar o body JSON: {}",
"auth_required": "Autenticação requerida",
"role_insufficient": "Função insuficiente",
"time_too_old": "Muito cedo (mín: {})",
"time_too_far": "Muito tarde (máx: {})",
"datetime_too_old": "Muito cedo (mín: {})",
"datetime_too_far": "Muito tarde (máx: {})",
"duration_invalid": "Duração inválida (esperado número de segundos)",
"duration_too_short": "Duração mínima: {} segundos",
"duration_too_long": "Duração máxima: {} segundos",
"file_max_count": "Máximo de {} arquivos permitido",
"file_too_large": "Arquivo '{}' muito grande ({}MB > {}MB máx)",
"file_invalid_image": "O arquivo '{}' não é uma imagem válida",
"image_too_wide": "A imagem '{}' é muito larga ({}px > {}px)",
"image_too_tall": "A imagem '{}' é muito alta ({}px > {}px)",
"boolean_required": "Você deve aceitar este campo",
"slug_unicode_invalid": "Apenas letras, números, hífens e underscores são permitidos",
"unique_field_taken": "Este {} já está em uso.",
"unique_value_taken": "O valor do campo '{}' já está em uso.",
"unique_constraint_violated": "Uma restrição de unicidade foi violada.",
"db_error": "Erro de banco de dados: {}",
"text_field_too_large": "Campo de texto muito grande (max 1 MB)",
"upload_too_large": "Upload muito grande (max {}MB)"
},
"csrf": {
"missing": "Token CSRF ausente",
"invalid": "Token CSRF inválido",
"invalid_or_missing": "Token CSRF inválido ou ausente",
"forbidden": "Token CSRF inválido",
"session_write_error": "Erro ao gravar a sessão"
},
"error": {
"source": "Fonte: {}",
"AppError": "Erro de aplicação",
"build": "Erro de build: {}",
"internal": "Erro interno",
"forbidden": "Acesso proibido",
"not_found": "Recurso não encontrado",
"validation": "Erro de validação: {}",
"database": "Erro de banco de dados: {}",
"io": "Erro IO: {}",
"template": "Erro de template: {}",
"custom": "Erro personalizado: {}",
"title": {
"not_found": "Página não encontrada",
"forbidden": "Acesso proibido",
"validation": "Erro de validação",
"database": "Erro de banco de dados",
"template": "Erro de renderização de template",
"internal": "Erro interno do servidor"
},
"path_not_found": "O caminho solicitado '{}' não foi encontrado",
"internal_occurred": "Ocorreu um erro interno",
"context_occurred": "Erro AppError ocorrido"
},
"title": {
"template": "Erro de template em '{}'"
},
"build": {
"validation_failed": "Falha na validação do build: {}",
"check_failed": "Build falhou com {} erro(s) de verificação",
"template_failed": "Falha no carregamento do template: {}",
"db_missing": "Conexão com banco de dados necessária quando o recurso 'orm' está habilitado",
"component_not_ready": "O componente '{}' não está pronto"
},
"middleware": {
"host_invalid": "Host inválido: '{}' (Hosts permitidos: {})",
"host_debug": "Host inválido: '{}'. Adicione-o a RUNIQUE_ALLOWED_HOSTS.",
"bad_request": "Requisição inválida"
},
"html": {
"404_title": "404",
"404_text": "Página não encontrada",
"500_title": "500",
"500_text": "Erro interno do servidor",
"500_notice": "Nossa equipe foi notificada e está trabalhando no problema.",
"429_title": "429",
"429_text": "Muitas requisições. Por favor aguarde um momento antes de tentar novamente.",
"back_home": "Voltar ao início",
"critical_error_title": "Erro crítico",
"critical_error_text": "O sistema de tratamento de erros encontrou um erro.",
"critical_error_contact": "Esta situação nunca deveria ocorrer. Por favor, contate o administrador do sistema."
},
"debug": {
"stack_trace_title": "Rastreamento detalhado de erros",
"stack_trace_tip": "O erro mais alto (nível 0) é geralmente a causa raiz. Os erros seguintes mostram como o erro se propagou no código."
},
"flash": {
"welcome": "Bem-vindo {}, sua conta foi criada!",
"fix_errors": "Por favor, corrija os erros",
"success_demo": "Esta é uma mensagem de sucesso.",
"info_demo": "Esta é uma mensagem de informação.",
"warning_demo": "Esta é uma mensagem de aviso.",
"error_demo": "Esta é uma mensagem de erro."
},
"log": {
"db_connecting": "Conectando ao banco de dados {}...",
"db_connected": "Banco de dados conectado com sucesso ({})",
"db_failed": "Falha na conexão com o banco de dados",
"db_engine": "Motor: {}",
"template_render_error": "Erro de renderização do template",
"error_handler": "Erro crítico ocorrido",
"error_handled": "Erro tratado",
"files_count": "adicionar arquivos JS ao formulário",
"js_file_skip": "Arquivo JS ignorado",
"already_initialized": "Logger já inicializado"
},
"cli": {
"creating_project": "Criando projeto '{}'...",
"admin_detected": "Admin detectado → iniciando o daemon",
"add_admin_hint": "Adicione .with_admin(...) no seu builder para ativar o painel de administração.",
"daemon_error": "[Daemon] Erro: {}",
"cargo_run_failed": "O servidor da aplicação não iniciou corretamente (cargo run)",
"file_not_found": "Arquivo não encontrado: {}\\nCertifique-se de estar na raiz do seu projeto Runique.",
"admin_not_found": "Arquivo admin não encontrado: {}\\nCrie src/admin.rs com a macro admin!{{}}.",
"name_empty": "O nome do projeto não pode estar vazio",
"name_invalid": "O nome do projeto deve conter apenas letras, números, _ ou -",
"name_dash": "O nome do projeto não pode começar com -",
"folder_exists": "A pasta '{}' já existe",
"cargo_run_expect": "Falha ao iniciar cargo run",
"project_created": "Projeto '{}' criado com sucesso!",
"getting_started": "Para começar:",
"cd_hint": "cd {}",
"cargo_run_hint": "cargo run"
},
"daemon": {
"modification_detected": "Modificação detectada → regenerando...",
"unable_read": "Impossível ler: {}",
"parse_error": "Erro de análise: {}",
"no_resource": "Nenhum recurso em admin!{{}} — nada a gerar",
"with_admin_disabled": "with_admin desativado → daemon parado",
"operational": "Daemon operacional → src/admin/generated.rs",
"generation_error": "Erro de geração: {}",
"watcher_error": "Erro do watcher: {}",
"unable_create": "Impossível criar o watcher: {}",
"unable_watch": "Impossível monitorar {} : {}"
},
"macro": {
"named_fields_only": "Apenas structs com campos nomeados",
"structs_only": "Funciona apenas em structs",
"forms_field_required": "A struct '{}' deve ter um campo 'Forms'",
"field_no_name": "Campo sem nome",
"model_form_named_only": "DeriveModelForm: apenas structs com campos nomeados",
"model_form_structs_only": "DeriveModelForm: apenas structs"
},
"parser": {
"string_expected": "Literal de string esperado, encontrado: {}",
"string_eof": "Literal de string esperado, fim do arquivo",
"array_expected": "Array [...] esperado para permissões, encontrado: {}",
"array_eof": "Array [...] esperado para permissões, fim do arquivo",
"role_required": "Pelo menos uma função necessária em permissions: [...]",
"punct_expected": "'{}' esperado, encontrado: {}",
"punct_eof": "'{}' esperado, fim do arquivo",
"title_required": "admin!: 'title' é obrigatório",
"permissions_required": "admin!: 'permissions' é obrigatório",
"list_display_exclude_exclusive": "admin!: 'list_display' e 'list_exclude' são mutuamente exclusivos"
},
"TemplateMessage": {
"debug_info_title": "Informações de debug",
"debug_field_title": "Título",
"debug_field_count": "Contagem de campos",
"debug_error_count": "Erros",
"debug_main_message": "Mensagem principal",
"debug_root_cause": "Causa raiz",
"debug_details": "Detalhes adicionais",
"debug_request_info": "Informações da requisição",
"debug_http_method": "Método HTTP",
"debug_path": "Caminho",
"debug_query_params": "Parâmetros de consulta",
"debug_http_headers": "Cabeçalhos HTTP",
"debug_template_info": "Informações do template",
"debug_template_name": "Nome do template",
"debug_error_line": "Linha do erro",
"debug_template_source": "Código fonte do template",
"debug_available_templates": "Templates disponíveis",
"debug_stack_trace_title": "Rastreamento de erro detalhado",
"debug_stack_trace_tip": "O erro mais alto (nível 0) é geralmente a causa raiz. Erros subsequentes mostram como o erro se propagou no código.",
"debug_environment": "Ambiente",
"debug_debug_mode": "Modo debug",
"debug_enabled": "Ativado",
"debug_disabled": "Desativado",
"debug_rust_version": "Versão do Rust",
"debug_app_version": "Versão do App",
"debug_status_code": "Código de status",
"debug_header_name": "Nome",
"debug_header_value": "Valor"
},
"admin": {
"group": "Grupo",
"groups": "Grupos",
"resource": "Recurso",
"resources": "Recursos",
"can_create": "Criar",
"can_read": "Ler",
"can_update": "Modificar",
"can_delete": "Excluir",
"can_update_own": "Modificar",
"can_delete_own": "Excluir",
"name": "Nome",
"username": "Nome de usuário",
"email": "Email",
"staff": "Staff",
"superuser": "Superusuário",
"active": "Ativo",
"user": {
"username_too_short": "O nome de usuário é muito curto (min 3 car.)",
"invalid_email": "Formato de endereço de e-mail inválido"
},
"login": {
"title": "Entrar",
"subtitle": "Faça login para acessar o painel de administração",
"label_username": "Nome de usuário",
"label_password": "Senha",
"btn_submit": "Entrar",
"error_session": "Erro ao abrir a sessão.",
"error_credentials": "Credenciais incorretas ou direitos insuficientes.",
"error_locked": "Muitas tentativas. Conta temporariamente bloqueada. Tente novamente em {} segundos."
},
"logout": {
"success": "Desconectado com sucesso."
},
"access": {
"no_auth_handler": "Nenhum manipulador de autenticação configurado. Chame .auth(MyAuth) em AdminConfig.",
"insufficient_rights": "Direitos insuficientes para acessar a administração"
},
"dashboard": {
"title": "Painel",
"subtitle": "Visão geral da aplicação",
"card_resources": "Recursos",
"th_resource": "Recurso",
"th_key": "Chave",
"th_permissions": "Permissões",
"th_actions": "Ações",
"btn_list": "Lista",
"btn_create": "Criar",
"empty_title": "Nenhum recurso registrado",
"empty_desc": "Declare seus recursos em src/admin.rs com a macro admin!{{}} e depois execute runique start"
},
"list": {
"breadcrumb_admin": "Administração",
"entries_count_one": "entrada",
"entries_count_many": "entradas",
"btn_create": "Criar",
"th_id": "id",
"th_actions": "Ações",
"bool_true": "Sim",
"bool_false": "Não",
"btn_detail": "Detalhe",
"btn_edit": "Editar",
"btn_delete": "Excluir",
"confirm_delete": "Realmente excluir?",
"empty_title": "Nenhuma entrada",
"empty_desc": "Comece criando um item.",
"btn_create_first": "Criar o primeiro",
"search_placeholder": "Pesquisar..."
},
"create": {
"title": "Criar",
"breadcrumb": "Criar",
"card_info": "Informações",
"no_fields": "Nenhum campo disponível no momento.",
"btn_cancel": "Cancelar",
"btn_submit": "Criar",
"success": "Entrada criada com sucesso!"
},
"edit": {
"title": "Editar",
"breadcrumb": "Editar",
"card_info": "Informações",
"no_fields": "Nenhum campo disponível no momento.",
"btn_cancel": "Cancelar",
"btn_submit": "Salvar",
"success": "Entrada atualizada com sucesso!"
},
"detail": {
"title": "Detalhe",
"breadcrumb": "Detalhe",
"entry_label": "Entrada",
"btn_list": "← Lista",
"btn_edit": "Editar",
"btn_delete": "Excluir",
"confirm_delete": "Excluir esta entrada?"
},
"reset_password": {
"btn": "Redefinir senha",
"success_email": "Reset link sent to {}.",
"success_link": "Reset link (mailer not configured): {}",
"error_no_email": "No email field found for this user.",
"error_send": "Error sending email: {}",
"email_subject": "Redefina sua senha",
"email_title": "Redefinição de senha",
"email_greeting": "Olá,",
"email_body": "Clique no link abaixo para redefinir sua senha (válido por 1 hora):",
"email_btn": "Redefinir minha senha",
"email_ignore": "Se você não solicitou esta redefinição, ignore esta mensagem."
},
"user_created": {
"email_subject": "Bem-vindo — defina sua senha",
"email_sent": "E-mail de boas-vindas enviado para {}.",
"email_greeting": "Bem-vindo,",
"email_body": "Uma conta foi criada para você. Clique no link para definir sua senha:",
"email_btn": "Definir minha senha",
"email_validity": "Este link é válido por 1 hora. Se não esperava esta mensagem, ignore-a."
},
"delete": {
"title": "Excluir",
"breadcrumb": "Excluir",
"heading": "Confirmar exclusão",
"btn_cancel": "← Cancelar",
"btn_confirm": "Sim, excluir permanentemente",
"warning": {
"title": "Atenção!",
"desc": "Você está prestes a excluir a entrada",
"of": "do recurso",
"irreversible": "Esta ação é irreversível."
},
"success": "Entrada excluída com sucesso!",
"not_found": "Recurso não encontrado."
},
"bulk": {
"no_selection": "Nenhum item selecionado.",
"no_field_selected": "Nenhum campo alterado.",
"delete_success": "item(ns) excluído(s).",
"update_success": "item(ns) atualizado(s)."
},
"base": {
"title": "Administração",
"breadcrumb": "Admin",
"toggle": "Recolher menu",
"logout_title": "Sair"
},
"superuser_wizard": {
"title": "=== Criar superusuário ===",
"algo_prompt": "[1/5] Algoritmo de hash",
"algo_argon2": "Argon2 (recomendado)",
"algo_bcrypt": "Bcrypt",
"algo_scrypt": "Scrypt",
"algo_custom": "Provedor personalizado",
"provider_path": "Caminho do provedor",
"invalid_path": "Caminho inválido.",
"username_prompt": "[2/5] Nome de usuário",
"username_empty": "O nome de usuário não pode ser vazio.",
"username_taken": "Já existe um usuário com este nome.",
"email_prompt": "[3/5] Email",
"email_invalid": "Email inválido.",
"email_taken": "Já existe um usuário com este email.",
"password_prompt": "[4/5] Senha",
"password_too_short": "A senha deve ter pelo menos 10 caracteres.",
"confirm_prompt": "[5/5] Confirmar senha",
"password_mismatch": "As senhas não correspondem. Por favor, tente novamente.",
"review_algo": " Algoritmo : {}",
"review_username": " Usuário : {}",
"review_email": " Email : {}",
"review_password": " Senha : ••••••••",
"review_action": "Ação",
"confirm_create": "Confirmar e criar",
"change_algo": "Alterar algoritmo",
"modify_password": "Modificar senha",
"success": "✓ Superusuário criado com sucesso!",
"id_line": " ID : {}",
"username_line": " Usuário : {}",
"email_line": " Email : {}"
},
"builtin": {
"invalid_id": "Identificador inválido.",
"droit_resource_required": "Por favor, selecione pelo menos um recurso.",
"droit_exists": "O direito \"{}\" já existe.",
"groupe_exists": "Já existe um grupo chamado \"{}\"."
}
},
"makemigrations": {
"scanning": "Verificando entidades em '{}'...",
"found_schema": "-> Esquema encontrado: {}",
"found_extend": "-> Extensão de tabela de framework encontrada: {}",
"no_schema": "Nenhuma função schema() encontrada em '{}'.",
"schema_count": "{} esquema(s) encontrado(s).",
"updated_lib": "Atualizado {}",
"no_changes": "Nenhuma alteração detectada. Seu esquema está atualizado.",
"destructive_detected": "Alterações destrutivas detectadas:",
"generated": "Gerado: {}",
"snapshot_updated": "Instantâneo atualizado: {}",
"seaorm_alter": "Migração ALTER SeaORM gerada: {}",
"batch_up": "Lote up gerado: {}",
"batch_down": "Lote down gerado: {}",
"apply_hint": "Execute 'sea-orm-cli migrate up' para aplicar.",
"extend_unknown_table": "extend!{{}} : \"{}\" não é uma tabela de framework conhecida. Tabelas permitidas: {}. Para estender uma tabela de aplicação, modifique seu model!{{}} diretamente.",
"extend_invalid_syntax": "extend!{{}} : sintaxe inválida. Esperado: table: \"nome_tabela\", fields: {{ ... }}",
"admin_positioned": "AdminTableMigration posicionada após a migração de '{}'",
"files_ready": "{} arquivo(s) pronto(s) para migrar."
},
"migrate": {
"applying": "Aplicando migrações de '{}'...",
"run_hint": "Executar: sea-orm-cli migrate up",
"complete_up": "Migração concluída.",
"complete": "Reversão concluída.",
"available_for": "Arquivos de reversão disponíveis para '{}':",
"rolling_back_batch": "Revertendo lote: {}",
"done": "Concluído: {}",
"rolling_back": "Revertendo: {}",
"no_applied_dir": "Nenhum diretório applied/ encontrado.",
"by_time_header": "by_time (lotes completos):",
"none_available": "Nenhum arquivo de reversão disponível.",
"usage": "Uso:",
"usage_files": "runique migration down --files <table/timestamp> [<table/timestamp> ...]",
"usage_batch": "runique migration down --batch <timestamp>",
"no_down": "Nenhuma instrução down encontrada.",
"executing": "Executando: {}"
},
"reset": {
"forgot_title": "Esqueceu a senha",
"reset_title": "Nova senha",
"success_title": "Senha redefinida",
"email_label": "Endereço de email",
"new_password_label": "Nova senha",
"confirm_label": "Confirmar senha",
"email_mismatch": "O endereço de email não corresponde ao link.",
"invalid_link": "Link inválido.",
"invalid_or_expired": "O link de redefinição é inválido ou expirou.",
"password_min_length": "A senha deve ter pelo menos {} caracteres.",
"password_mismatch": "As senhas não coincidem.",
"check_inbox": "Se este endereço estiver associado a uma conta, você receberá um email de redefinição.",
"email_subject": "Redefinição de senha",
"email_body": "<p>Olá {0},</p><p>Clique no link a seguir para redefinir sua senha (válido por 1 hora):</p><p><a href=\"{1}\">{2}</a></p>"
},
"permission": {
"col.id": "ID",
"col.can_create": "Criar",
"col.can_delete": "Eliminar",
"col.can_delete_own": "Eliminar (próprio)",
"col.can_read": "Ler",
"col.can_update": "Modificar",
"col.can_update_own": "Modificar (próprio)",
"col.groupes": "Grupos",
"col.resource_key": "Recurso",
"col.actions": "Ações"
}
}