{
  "_display_name": "Português (Brasil)",

  "app.tab.core": "⚙️ Core",
  "app.tab.servers": "🖥️ Servidores",
  "app.tab.diagnostics": "🔍 Diagnósticos",
  "app.tab.help": "❓ Ajuda",

  "core.status_checking": "Verificando status do Core...",
  "core.status_error_not_found": "Status do Core ❌ Erro: sing-box não encontrado",
  "core.status_restarting": "Status do Core 🔄 Reiniciando...",
  "core.status_running": "Status do Core ✅ Em execução",
  "core.status_stopped": "Status do Core ⏸️ Parado",
  "core.button_start": "Iniciar",
  "core.button_stop": "Parar",
  "core.button_exit": "Sair",
  "core.button_restart": "Reiniciar",
  "core.label_config": "Config",
  "core.status_checking_config": "Verificando config...",
  "core.status_config_ok": "%s ✅ %s",
  "core.status_config_not_found": "%s ❌ não encontrado",
  "core.status_config_error": "Erro de config: %v",
  "core.status_parser_starting": "Iniciando...",
  "core.button_update": "🔄 Atualizar",
  "core.button_wizard": "⚙️ Assistente",
  "core.button_download_template": "Baixar modelo de config",
  "core.label_singbox": "Sing-box",
  "core.singbox_help_msg": "sing-box é o binário principal.\n\n",
  "core.singbox_help_look_for": "Procure por: %s\n",
  "core.singbox_help_extract": "Extraia o binário para a pasta bin.\n\n",
  "core.singbox_help_manual": "Você pode baixar usando o botão acima, ou manualmente em:",
  "core.singbox_status_checking": "Verificando...",
  "core.singbox_status_not_found": "❌ não encontrado",
  "core.button_download": "Baixar",
  "core.button_download_version": "Baixar v%s",
  "core.button_update_version": "Atualizar v%s",
  "core.dialog_singbox_title": "Sing-box",
  "core.dialog_singbox_close": "Fechar",
  "core.button_open_bin": "Abrir pasta bin",
  "core.label_wintun": "Wintun",
  "core.wintun_help_msg": "wintun.dll é necessário para o modo TUN no Windows.\n\n",
  "core.wintun_help_in_archive": "No arquivo baixado, extraia wintun.dll\n\nSeu sistema é %s.\n\n",
  "core.wintun_help_place": "Coloque-o na pasta bin: bin\n\n",
  "core.wintun_help_manual": "Você pode baixar usando o botão acima, ou manualmente em:",
  "core.wintun_status_checking": "Verificando...",
  "core.wintun_status_ok": "ok",
  "core.wintun_status_not_found": "❌ não encontrado",
  "core.wintun_status_error": "❌ Erro ao verificar wintun.dll",
  "core.dialog_wintun_title": "Wintun",
  "core.dialog_wintun_close": "Fechar",
  "core.dialog_template_title": "Modelo de config",
  "core.dialog_template_saved": "Modelo salvo em %s",
  "core.dialog_download_complete_title": "Download concluído",
  "core.dialog_update_available_title": "Atualização disponível",
  "core.dialog_update_msg": "Uma nova versão do aplicativo está disponível",
  "core.dialog_update_current": "Versão atual: %s",
  "core.dialog_update_new": "Nova versão: %s",
  "core.dialog_update_close": "Fechar",
  "core.button_download_from_github": "Baixar do GitHub",
  "core.config_not_found_title": "Configuração não encontrada",
  "core.config_not_found_message": "⚠️ Arquivo de configuração não encontrado!\n\nO arquivo %s está faltando na pasta bin/.\n\nPara começar:\n1. baixe o Assistente\n2. use o Assistente para gerar um arquivo de configuração\n3. pressione Iniciar\n",
  "core.already_running_app_title": "Informação",
  "core.already_running_app_message": "O aplicativo já está em execução. Use a instância existente ou feche-a antes de iniciar uma nova.",
  "core.info_title": "Info",
  "core.already_running": "Sing-Box já está em execução (de acordo com o estado interno).",
  "core.crash_title": "Falha",
  "core.crash_restarting": "Sing-Box falhou, reiniciando... (tentativa %d/%d)",

  "error.startup": "Falha ao iniciar sing-box:\n\n%s\n\nVerifique:\n1. config.json é válido\n2. o executável sing-box existe\n3. veja os logs para detalhes",
  "error.parser": "O parser falhou:\n\n%s\n\nVerifique:\n1. a URL de assinatura é válida\n2. a conexão de rede\n3. veja parser.log para detalhes",
  "error.linux_capabilities": "São necessárias capabilities do Linux",
  "error.restart_failed": "Sing-Box falhou ao reiniciar após %d tentativas. Verifique sing-box.log para detalhes.",
  "error.check_updates_failed": "Falha ao verificar atualizações",
  "error.version_check": "Erro ao verificar a versão: %s",

  "core.update_available_title": "Atualização disponível",
  "core.update_available_message": "Atualização disponível!\n\nInstalado: %s\nÚltimo: %s\n\nVocê pode baixar a atualização na aba Core.",
  "core.no_updates_title": "Sem atualizações",
  "core.latest_version_message": "Você está usando a versão mais recente.\n\nInstalado: %s\nÚltimo: %s",

  "tray.open": "Abrir",
  "tray.quit": "Sair",
  "tray.start_vpn": "Iniciar VPN",
  "tray.stop_vpn": "Parar VPN",
  "tray.select_proxy": "Selecionar proxy",
  "tray.no_proxies_available": "Nenhum proxy disponível",
  "tray.hide_app_from_dock": "Ocultar app do Dock",

  "help.open_config_folder": "⚙️ Abrir pasta de config",
  "help.kill_singbox": "🛑 Encerrar Sing-Box",
  "help.kill_title": "Encerrar",
  "help.kill_result": "Sing-Box foi encerrado (se estava em execução).",
  "help.version_label": "📦 Versão: %s",
  "help.checking_updates": "Verificando atualizações...",
  "help.unable_to_check_updates": "Não foi possível verificar atualizações",
  "help.update_available_format": "🆕 Atualização disponível: %s\nAtual: %s",
  "help.dev_build_format": "✅ Você está usando uma build de desenvolvimento\nAtual: %s\nÚltima release: %s",
  "help.latest_version_format": "✅ Você está usando a versão mais recente\nAtual: %s",
  "help.telegram_link": "💬 Canal do Telegram",
  "help.github_link": "🐙 Repositório GitHub",
  "help.language_label": "Idioma:",
  "help.language_changed": "Idioma alterado. Reinicie o app para aplicar totalmente.",
  "help.download_locales": "📥 Baixar traduções",
  "help.download_locales_btn": "⬇",
  "help.download_locales_success": "Traduções baixadas (%d). Reinicie para ver novas línguas.",
  "help.download_locales_failed": "Falha ao baixar traduções",
  "help.downloading_locales": "Baixando...",
  "help.downloading_locales_btn": "🔄",

  "diag.stun_button": "STUN [UDP]",
  "diag.stun_check_title": "Verificação STUN",
  "diag.stun_checking": "Verificando, aguarde...",
  "diag.external_ip_format": "Seu IP externo: %s\n%s",
  "diag.copy_ip": "Copiar IP",
  "diag.copied_title": "Copiado",
  "diag.ip_copied": "Endereço IP copiado para a área de transferência.",
  "diag.stun_result_title": "Resultado da verificação STUN",
  "diag.close": "Fechar",
  "diag.stun_server_label": "Servidor STUN (host:porta):",
  "diag.use_system_socks5": "Usar proxy SOCKS5 do sistema",
  "diag.stun_settings": "Configurações STUN",
  "diag.save": "Salvar",
  "diag.cancel": "Cancelar",
  "diag.open_log_window": "Abrir janela de logs",
  "diag.open_logs_folder": "Abrir pasta de logs",
  "diag.ip_check_services": "Serviços de verificação de IP:",

  "log.window_title": "Logs",
  "log.level_label": "Nível:",
  "log.level_error": "Erro",
  "log.level_warn": "Aviso",
  "log.level_info": "Info",
  "log.level_verbose": "Detalhado",
  "log.level_trace": "Trace",
  "log.refresh": "Atualizar",
  "log.internal_tab": "Interno",
  "log.core_tab": "Core",
  "log.api_tab": "API",
  "log.file_not_available": "Arquivo de log não disponível.",

  "dialog.download_failed": "Download falhou. Veja o log para detalhes.",
  "dialog.download_failed_manual_hint": "Baixe o arquivo manualmente e coloque-o na pasta abaixo.",
  "dialog.open_download_page": "Abrir página de download",
  "dialog.open_folder": "Abrir pasta",
  "dialog.close": "Fechar",
  "dialog.copy": "Copiar",
  "dialog.ok": "OK",
  "dialog.kill_process": "Encerrar processo",
  "dialog.close_warning": "Fechar este aviso",
  "dialog.process_already_running": "Parece que o Sing-Box já está em execução.\nDeseja encerrar o processo existente?",
  "dialog.warning": "Aviso",
  "dialog.error_prefix": "❌ ",

  "servers.status_not_checked": "Status: Não verificado",
  "servers.status_click_load": "Clique em 'Carregar proxies'",
  "servers.status_loading": "Carregando proxies para '%s'...",
  "servers.status_loaded": "Proxies carregados para '%s'. Ativo: %s",
  "servers.status_clash_api_disabled": "Clash API desativada devido a erro de config",
  "servers.status_clash_api_off_error": "❌ Clash API Desativada (Erro)",
  "servers.status_clash_api_off_config": "❌ Clash API Desativada (Erro de config)",
  "servers.status_clash_api_on": "✅ Clash API Ativa",
  "servers.status_not_running": "Status: Não está em execução",
  "servers.status_singbox_stopped": "Sing-box está parado.",
  "servers.error_api_not_initialized": "Serviço de API não inicializado",
  "servers.error_api_disabled": "API desativada: erro de config",
  "servers.status_delay_error": "Erro de latência: %s",
  "servers.status_delay_format": "Latência: %d ms para %s",
  "servers.status_selected": "Selecionado: %s",
  "servers.status_selected_multi": "Selecionados: %d proxies",
  "servers.status_selected_none": "Nenhum proxy selecionado",
  "servers.status_switch_error": "Erro ao alternar: %s",
  "servers.status_switched": "'%s' alterado para %s",
  "servers.status_sorted_name_az": "Ordenado por nome (A-Z)",
  "servers.status_sorted_name_za": "Ordenado por nome (Z-A)",
  "servers.status_sorted_delay_fast": "Ordenado por latência (mais rápido primeiro)",
  "servers.status_sorted_delay_slow": "Ordenado por latência (mais lento primeiro)",
  "servers.status_no_proxies": "Nenhum proxy para pingar",
  "servers.status_list_counts": "Total / disp.: %d / %d",
  "servers.status_pinging": "Pingando %d proxies...",
  "servers.status_pinging_progress": "Pingando %d/%d...",
  "servers.status_ping_completed": "Teste de ping concluído para %d proxies",
  "servers.status_selected_group": "Grupo selecionado '%s'. Último proxy usado: %s",
  "servers.status_selected_group_only": "Grupo selecionado '%s'.",
  "servers.status_ping_url_updated": "URL de teste de ping atualizada: %s",
  "servers.label_proxy_name": "Nome do proxy",
  "servers.button_ping": "Ping",
  "servers.button_test": "teste",
  "servers.tooltip_hide_ping_errors": "Ocultar servidores com erro de ping",
  "servers.tooltip_show_ping_errors": "Mostrar todos os servidores",
  "servers.tooltip_sort_by_name": "Ordenar por nome (A–Z / Z–A)",
  "servers.tooltip_sort_by_delay": "Ordenar por atraso de ping (mais rápido / mais lento primeiro)",
  "servers.tooltip_ping_all": "Ping em todos os proxies do grupo",
  "servers.tooltip_ping_settings": "URL do teste de ping e requisições paralelas",
  "servers.button_export": "Exportar",
  "servers.tooltip_export_uris": "Todas as linhas visiveis, ordem da lista, uma URI por linha (erros de ping ocultos omitidos; exceto selector, urltest, direct).",
  "servers.tooltip_export_uris_selected": "Apenas proxies selecionados (multipla selecao), ordem da lista (mesmas regras de URI).",
  "servers.status_export_nothing_visible": "Nada para exportar (nenhuma linha na vista atual).",
  "servers.status_export_nothing_selected": "Nada para exportar (nenhuma linha selecionada na vista).",
  "servers.status_export_uris_building": "Preparando exportacao...",
  "servers.status_export_uris_done": "Area de transferencia: %d linhas (uma URI por linha)",
  "servers.status_export_uris_none": "Nenhum link share pode ser gerado para esta lista.",
  "servers.error_export_no_config": "Caminho da configuracao nao definido.",
  "servers.label_sort_by_name": "A…Z",
  "servers.placeholder_select_group": "Selecione o grupo de seletores",
  "servers.label_selector_group": "Grupo de seletores:",
  "servers.dialog_ping_settings_title": "Configurações do teste de ping",
  "servers.ping_label_url": "URL do teste de ping",
  "servers.ping_label_custom_url": "URL personalizada:",
  "servers.ping_label_parallel": "Requisições paralelas (ping em todos):",
  "servers.ping_placeholder_url": "https://example.com/generate_204",
  "servers.ping_option_custom": "Personalizado",
  "servers.ping_button_save": "Salvar",
  "servers.ping_button_cancel": "Cancelar",
  "servers.dialog_selector_active_title": "Seletor → Outbound ativo",
  "servers.dialog_selector_close": "Fechar",
  "servers.ping_button_error": "Erro",
  "servers.ping_format_ms": "%d ms",
  "servers.selector_no_active": "%s → (nenhum outbound ativo)",
  "servers.selector_error": "%s → erro: %v",
  "servers.selector_active": "%s → %s",

  "wizard.window_title": "Assistente de configuração",
  "wizard.tab_sources": "Fontes",
  "wizard.tab_outbounds": "Outbounds",
  "wizard.tab_rules": "Regras",
  "wizard.tab_preview": "Prévia",
  "wizard.button_read": "Ler",
  "wizard.button_save_as": "Salvar como",
  "wizard.button_close": "Fechar",
  "wizard.button_prev": "Voltar",
  "wizard.button_next": "Avançar",
  "wizard.button_save": "Salvar",
  "wizard.dialog_confirmation": "Confirmação",
  "wizard.dialog_unsaved_changes": "As alterações atuais serão perdidas. Salvar o estado atual?",
  "wizard.dialog_save_before_close": "Salvar as alterações antes de fechar?",
  "wizard.dialog_discard": "Descartar",
  "wizard.dialog_cancel": "Cancelar",
  "wizard.shared.button_edit": "Editar",
  "wizard.shared.button_del": "Del",
  "wizard.error_load_config": "Falha ao carregar a configuração existente",
  "wizard.error_save_state": "Falha ao salvar o estado",
  "wizard.error_load_state": "Falha ao carregar o estado",
  "wizard.error_restore_state": "Falha ao restaurar o estado",
  "wizard.error_template_failed": "Falha ao carregar o modelo de config",
  "wizard.error_template_missing": "Modelo de config ausente",

  "wizard.source.label_url": "URL de assinatura ou links diretos:",
  "wizard.source.placeholder_url": "https://sua-url-de-assinatura-aqui",
  "wizard.source.hint": "Suporta URLs de assinatura (http/https) ou links diretos (vless://, vmess://, trojan://, ss://, hysteria2://, ssh://). Para vários links, use uma nova linha para cada.",
  "wizard.source.button_add": "Adicionar",
  "wizard.source.button_get_free": "Obter VPN grátis!",
  "wizard.source.label_sources": "Fontes",
  "wizard.source.no_sources": "Nenhuma fonte definida em ParserConfig.",
  "wizard.source.connections_n": "Conexões %d",
  "wizard.source.source_n": "Fonte %d",
  "wizard.source.placeholder_prefix": "prefixo",
  "wizard.source.button_view": "Ver",
  "wizard.source.button_del": "Del",
  "wizard.source.dialog_copied_title": "Copiado",
  "wizard.source.dialog_copied_message": "Fonte copiada para a área de transferência.",
  "wizard.source.preview_click_refresh": "Clique em Atualizar para carregar os servidores de todas as fontes.",
  "wizard.source.preview_no_sources": "Nenhuma fonte. Adicione URLs e clique em Atualizar.",
  "wizard.source.preview_loading": "Carregando...",
  "wizard.source.preview_error": "Erro: %s",
  "wizard.source.preview_servers": "%d servidor(es) de %d fonte(s)",
  "wizard.source.preview_errors": "  ⚠️ %d erro(s)",
  "wizard.source.button_refresh": "Atualizar",
  "wizard.source.view_title": "Servidores — %s",
  "wizard.source.view_close": "Fechar",
  "wizard.source.view_no_servers": "Nenhum servidor encontrado.",
  "wizard.source.view_server_count": "%d servidor(es)",

  "wizard.outbounds.placeholder": "Cole o JSON de ParserConfig aqui...",
  "wizard.outbounds.button_docs": "📖 Documentação",
  "wizard.outbounds.label": "ParserConfig:",
  "wizard.outbounds.error_serialize": "Falha ao serializar ParserConfig",
  "wizard.outbounds.error_open_docs": "falha ao abrir a documentação",
  "wizard.outbounds.error_invalid_json": "JSON de ParserConfig inválido",
  "wizard.outbounds.error_invalid_config": "ParserConfig inválido",

  "wizard.rules.button_srs_download": "⬇ srs",
  "wizard.rules.button_srs_loading": "🔄 srs",
  "wizard.rules.button_srs_done": "✔️ srs",
  "wizard.rules.template_not_found": "Arquivo de modelo bin/%s não encontrado.",
  "wizard.rules.template_create_hint": "Crie o arquivo de modelo para habilitar esta aba.",
  "wizard.rules.no_selectable_rules": "Nenhuma regra selecionável definida no modelo.",
  "wizard.rules.label_outbound": "Outbound:",
  "wizard.rules.button_info": "?",
  "wizard.rules.button_edit": "✏️",
  "wizard.rules.button_delete": "Delete rule",
  "wizard.rules.dialog_delete_unnamed": "(unnamed rule)",
  "wizard.rules.dialog_delete_confirm": "Delete custom rule \"%s\"?",
  "wizard.rules.button_add_rule": "➕ Adicionar regra",
  "wizard.rules.label_final_outbound": "Outbound final:",
  "wizard.rules.checkbox_tun": "TUN",
  "wizard.rules.tun_help": "Ativar TUN exigirá inserir sua senha ao iniciar ou parar a VPN.",
  "wizard.rules.label_selectable": "Regras selecionáveis",
  "wizard.rules.error_srs_failed": "Falha ao baixar o conjunto de regras (SRS)",

  "wizard.preview.placeholder": "A prévia aparecerá aqui",
  "wizard.preview.status_click_show": "Clique em 'Mostrar prévia' para gerar a prévia (isso pode levar tempo para configurações grandes)",
  "wizard.preview.button_show": "Mostrar prévia",
  "wizard.preview.label": "Prévia",
  "wizard.preview.loading_large": "Carregando prévia grande...",
  "wizard.preview.status_loading_large": "⏳ Carregando prévia grande...",
  "wizard.preview.status_parsing": "⏳ Fazendo parse das assinaturas e gerando outbounds...",
  "wizard.preview.text_parsing": "Fazendo parse da configuração... Aguarde.",
  "wizard.preview.text_building": "Construindo prévia...",
  "wizard.preview.status_building": "⏳ Construindo a configuração de prévia...",
  "wizard.preview.status_parsing_config": "⏳ Fazendo parse de ParserConfig...",
  "wizard.preview.error": "Erro na prévia: %v",
  "wizard.preview.status_error": "❌ Erro: %v",
  "wizard.preview.status_ready": "✅ Prévia pronta",

  "wizard.save.error_config_empty": "ParserConfig está vazio",
  "wizard.save.error_config_invalid": "ParserConfig é inválido",
  "wizard.save.error_no_sources": "Adicione ao menos uma fonte: use a aba Fontes (Adicionar) ou adicione proxies em ParserConfig na aba Outbounds.",
  "wizard.save.dialog_saving": "Salvando",
  "wizard.save.dialog_in_progress": "Uma operação de salvamento já está em andamento... Aguarde.",
  "wizard.save.status_waiting": "Aguardando parsing...",
  "wizard.save.status_parsing": "Fazendo parse das assinaturas...",
  "wizard.save.status_building": "Gerando configuração...",
  "wizard.save.status_preparing": "Preparando...",
  "wizard.save.status_validating": "Validando...",
  "wizard.save.status_saving_state": "Salvando estado...",
  "wizard.save.status_done": "Concluído",
  "wizard.save.button_copy": "Copiar config",
  "wizard.save.dialog_validation_failed": "Validação falhou",
  "wizard.save.dialog_copied_title": "Copiado",
  "wizard.save.dialog_copied_message": "Config copiada para a área de transferência.",
  "wizard.save.dialog_success_message": "Config gravada em %s\n\n✅ Validação: Aprovada",
  "wizard.save.dialog_success_title": "Config salva",
  "wizard.save.error_parse_failed": "Falha ao fazer parse das assinaturas",
  "wizard.save.error_controller": "controller não disponível",

  "wizard.add_rule.title_add": "Adicionar regra",
  "wizard.add_rule.title_edit": "Editar regra",
  "wizard.add_rule.placeholder_name": "Nome da regra",
  "wizard.add_rule.placeholder_ip": "Insira endereços IP (formato CIDR)\nex.: 192.168.1.0/24",
  "wizard.add_rule.placeholder_url": "Insira domínios ou URLs (um por linha)\nex.: example.com",
  "wizard.add_rule.label_processes": "Processos (selecione um ou mais via popup):",
  "wizard.add_rule.button_select_processes": "Selecionar processos...",
  "wizard.add_rule.check_match_by_path": "Correspondência por caminho",
  "wizard.add_rule.radio_simple": "Simples",
  "wizard.add_rule.radio_regex": "Regex",
  "wizard.add_rule.placeholder_path_simple": "Um por linha. Use * como curinga (ex.: */steam/* ou *\\Steam\\*).",
  "wizard.add_rule.placeholder_path_regex": "Um por linha. Regex completo como está (sem /regex/i). Ex.: ^C:\\\\Games\\\\.* ou .*steam.*",
  "wizard.add_rule.label_path_patterns": "Padrões de caminho (um por linha):",
  "wizard.add_rule.placeholder_custom": "JSON personalizado (ex.: {})",
  "wizard.add_rule.label_custom_json": "JSON personalizado:",
  "wizard.add_rule.placeholder_srs_urls": "URLs SRS (uma por linha)\nex.: https://raw.githubusercontent.com/.../file.srs",
  "wizard.add_rule.label_srs_urls": "URLs SRS (uma por linha):",
  "wizard.add_rule.placeholder_raw": "{\"ip_cidr\": [], \"outbound\": \"proxy-out\"}",
  "wizard.add_rule.type_ip": "Endereços IP (CIDR)",
  "wizard.add_rule.type_domain": "Domínios/URLs",
  "wizard.add_rule.type_process": "Processos",
  "wizard.add_rule.type_srs": "SRS",
  "wizard.add_rule.type_custom": "JSON personalizado",
  "wizard.add_rule.domain_exact": "Domínios exatos",
  "wizard.add_rule.domain_suffix": "Sufixo",
  "wizard.add_rule.domain_keyword": "Palavra-chave",
  "wizard.add_rule.domain_regex": "Regex",
  "wizard.add_rule.label_ip": "Endereços IP (um por linha, formato CIDR):",
  "wizard.add_rule.label_domains": "Domínios (um por linha):",
  "wizard.add_rule.label_suffixes": "Sufixos de domínio (um por linha):",
  "wizard.add_rule.label_keywords": "Palavras-chave de domínio (um por linha):",
  "wizard.add_rule.label_domain_regex": "Regex de domínio:",
  "wizard.add_rule.placeholder_domain_regex": "Ex.: ^.*\\.google\\.com$ ou .*\\.(google|youtube)\\.com$ (regex completo, sem /.../)",
  "wizard.add_rule.label_outbound": "Outbound:",
  "wizard.add_rule.button_add": "Adicionar",
  "wizard.add_rule.button_save": "Salvar",
  "wizard.add_rule.button_cancel": "Cancelar",
  "wizard.add_rule.button_remove": "−",
  "wizard.add_rule.window_select_processes": "Selecionar processos",
  "wizard.add_rule.button_add_process": "+ Adicionar",
  "wizard.add_rule.button_refresh": "Atualizar",
  "wizard.add_rule.button_close": "Fechar",
  "wizard.add_rule.label_name": "Nome da regra:",
  "wizard.add_rule.label_type": "Tipo de regra:",
  "wizard.add_rule.tab_form": "Form",
  "wizard.add_rule.tab_raw": "Raw",
  "wizard.add_rule.error_name_required": "O nome da regra é obrigatório",
  "wizard.add_rule.error_raw_empty": "O JSON raw está vazio",
  "wizard.add_rule.error_must_be_object": "a regra deve ser um objeto JSON",
  "wizard.add_rule.error_must_have_outbound": "a regra deve conter \"outbound\" ou \"action\"",
  "wizard.add_rule.dialog_not_recognized_title": "Regra não reconhecida",
  "wizard.add_rule.dialog_not_recognized_msg": "Não foi possível reconhecer a regra; o formulário não pode ser carregado. Permanecendo em Raw.",
  "wizard.add_rule.srs_hint": "Recomendamos procurar arquivos de conjuntos de regras (SRS) adequados no projeto:",
  "wizard.add_rule.srs_dialog_title": "Conjuntos de regras SRS",
  "wizard.add_rule.srs_dialog_close": "Fechar",
  "wizard.add_rule.button_open": "Abrir",
  "wizard.add_rule.error_path_required": "insira pelo menos um padrão de caminho",
  "wizard.add_rule.error_srs_required": "insira pelo menos uma URL SRS",
  "wizard.add_rule.error_srs_valid": "insira pelo menos uma URL SRS válida",
  "wizard.add_rule.error_custom_empty": "O JSON personalizado está vazio",
  "wizard.add_rule.error_custom_object": "O JSON personalizado deve ser um objeto",

  "wizard.save_state.title": "Salvar estado",
  "wizard.save_state.placeholder_id": "Insira o ID do estado (a-z, A-Z, 0-9, -, _)",
  "wizard.save_state.placeholder_comment": "Comentário (opcional)",
  "wizard.save_state.warning_exists": "Já existe um estado com este ID. Ele será sobrescrito.",
  "wizard.save_state.label_id": "ID do estado:",
  "wizard.save_state.label_comment": "Comentário:",
  "wizard.save_state.button_save": "Salvar",
  "wizard.save_state.button_cancel": "Cancelar",
  "wizard.save_state.error_empty": "O ID não pode ficar vazio",

  "wizard.load_state.title": "Carregar estado",
  "wizard.load_state.error_load_list": "Falha ao carregar a lista de estados",
  "wizard.load_state.suffix_current": " (Atual)",
  "wizard.load_state.button_load": "Carregar",
  "wizard.load_state.button_new": "Novo",
  "wizard.load_state.button_delete": "Excluir",
  "wizard.load_state.button_cancel": "Cancelar",
  "wizard.load_state.error_delete_current": "Não é possível excluir o estado atual (state.json)",
  "wizard.load_state.dialog_delete_title": "Excluir estado",
  "wizard.load_state.dialog_delete_confirm": "Excluir o estado '%s'?",
  "wizard.load_state.error_delete": "Falha ao excluir o estado",

  "wizard.get_free.loading_title": "Carregando",
  "wizard.get_free.loading_msg": "Baixando get_free.json...",
  "wizard.get_free.error_occurred": "Ocorreu um erro: %v",
  "wizard.get_free.error_download": "Falha ao baixar get_free.json:\n\nVerifique sua conexão com a internet e tente novamente.",
  "wizard.get_free.error_load": "Falha ao carregar get_free.json:\n\nVerifique o arquivo ou tente baixar novamente.",
  "wizard.get_free.error_data_not_loaded": "Erro: os dados não foram carregados",
  "wizard.get_free.error_process": "Falha ao processar get_free.json",
  "wizard.get_free.button_apply": "Aplicar configuração",
  "wizard.get_free.dialog_apply_title": "Aplicar configuração",
  "wizard.get_free.dialog_apply_confirm": "Aplicar esta configuração substituirá suas fontes e regras atuais. Continuar?",
  "wizard.get_free.error_apply": "Falha ao aplicar a configuração",
  "wizard.get_free.dialog_success_title": "Sucesso",
  "wizard.get_free.dialog_success_msg": "A configuração de get_free.json foi aplicada com sucesso!",
  "wizard.get_free.dialog_title": "Obter VPN grátis",
  "wizard.get_free.button_close": "Fechar",

  "wizard.outbound.title_edit": "Editar outbound",
  "wizard.outbound.title_add": "Adicionar outbound",
  "wizard.outbound.placeholder_tag": "ex.: proxy-out",
  "wizard.outbound.type_manual": "manual (selector)",
  "wizard.outbound.type_auto": "auto (urltest)",
  "wizard.outbound.placeholder_comment": "Comentário opcional",
  "wizard.outbound.scope_all": "Para todos",
  "wizard.outbound.scope_source": "Para a fonte: ",
  "wizard.outbound.label_source": "Fonte ",
  "wizard.outbound.label_tag": "tag",
  "wizard.outbound.placeholder_filter": "ex.: /🇳🇱/i ou !/(🇷🇺)/i",
  "wizard.outbound.placeholder_preferred": "ex.: /🇳🇱/i",
  "wizard.outbound.label_filters": "Filtros (chave e valor; use !/regex/i para negação)",
  "wizard.outbound.label_preferred": "Preferido por padrão (filtro para o nó padrão)",
  "wizard.outbound.label_add_outbounds": "Adicionar outbounds no início (direct-out, reject, outros)",
  "wizard.outbound.label_raw_json": "JSON raw do outbound",
  "wizard.outbound.button_docs": "📖 Documentação",
  "wizard.outbound.label_scope": "Escopo",
  "wizard.outbound.label_tag_field": "Tag",
  "wizard.outbound.label_type": "Tipo",
  "wizard.outbound.label_comment": "Comentário",
  "wizard.outbound.preview_switch": "Vá para Prévia para ver nós deste outbound.",
  "wizard.outbound.preview_no_presenter": "Prévia não disponível neste contexto (sem presenter).",
  "wizard.outbound.preview_model_nil": "Prévia não disponível: o modelo do assistente é nil.",
  "wizard.outbound.preview_invalid_json": "Falha ao gerar a prévia: JSON do outbound inválido. Vá para a aba \"Raw\" e corrija o JSON primeiro.",
  "wizard.outbound.preview_cache_failed": "Falha ao gerar o cache de prévia: %v",
  "wizard.outbound.preview_no_nodes": "Nenhum nó disponível para prévia. Configure as fontes e tente novamente.",
  "wizard.outbound.preview_unknown_source": "Fonte desconhecida",
  "wizard.outbound.preview_status": "%d nó(s) no total, %d corresponderam aos filtros",
  "wizard.outbound.preview_default": ", padrão: %s",
  "wizard.outbound.preview_also_includes": " | Também inclui: %s",
  "wizard.outbound.preview_source_errors": " | ⚠️ %d erro(s) de fonte",
  "wizard.outbound.tab_settings": "Configurações",
  "wizard.outbound.tab_raw": "Raw",
  "wizard.outbound.tab_preview": "Prévia",
  "wizard.outbound.button_cancel": "Cancelar",
  "wizard.outbound.button_save": "Salvar",
  "wizard.outbound.error_config": "ParserConfig não está disponível",
  "wizard.outbound.error_invalid_json": "JSON inválido",
  "wizard.outbound.error_tag_required": "o tag é obrigatório",
  "wizard.outbound.error_open_docs": "falha ao abrir a documentação",
  "wizard.outbound.configurator_label": "Outbounds:",
  "wizard.outbound.button_add": "Adicionar"
}
