merge fix/settings-trim: dead settings, upstream remnants, JSON/Clash subscriptions removed
# Conflicts: # frontend/src/models/setting.ts # frontend/src/pages/settings/GeneralTab.tsx # frontend/src/pages/settings/SettingsPage.tsx # frontend/src/pages/settings/SubscriptionBalancersTab.tsx # frontend/src/pages/xray/outbounds/OutboundsTab.css # frontend/src/schemas/setting.ts
This commit is contained in:
@@ -70,7 +70,6 @@
|
||||
"install": "Instalar",
|
||||
"clients": "Clientes",
|
||||
"usage": "Uso",
|
||||
"twoFactorCode": "Código",
|
||||
"remained": "Restante",
|
||||
"security": "Segurança",
|
||||
"somethingWentWrong": "Algo deu errado",
|
||||
@@ -103,8 +102,7 @@
|
||||
"docs": "Documentação",
|
||||
"openMenu": "Abrir menu",
|
||||
"pinSidebar": "Fixar barra lateral",
|
||||
"unpinSidebar": "Desafixar barra lateral",
|
||||
"subFormats": "Sub Formats"
|
||||
"unpinSidebar": "Desafixar barra lateral"
|
||||
},
|
||||
"pages": {
|
||||
"login": {
|
||||
@@ -716,7 +714,6 @@
|
||||
"detachFromInboundsResultMixed": "Desassociados {detached}, ignorados {skipped}, erros {errors}.",
|
||||
"subLinksTitle": "Links sub ({count})",
|
||||
"subLinkColumn": "URL da assinatura",
|
||||
"subJsonLinkColumn": "URL JSON da assinatura",
|
||||
"subLinksCopyAll": "Copiar tudo",
|
||||
"subLinksCopiedAll": "Copiados {count} link(s)",
|
||||
"subLinksEmpty": "Nenhum dos clientes selecionados tem ID de assinatura.",
|
||||
@@ -1068,7 +1065,6 @@
|
||||
"warnDefaultPort": "A porta padrão 2053 é bem conhecida — altere para uma porta aleatória.",
|
||||
"warnDefaultBasePath": "O caminho base padrão \"/\" é bem conhecido — altere para um caminho aleatório.",
|
||||
"warnDefaultSubPath": "O caminho de assinatura padrão \"/sub/\" é bem conhecido — altere-o.",
|
||||
"warnDefaultJsonPath": "O caminho de assinatura JSON padrão \"/json/\" é bem conhecido — altere-o.",
|
||||
"panelListeningIP": "IP de Escuta",
|
||||
"panelListeningIPDesc": "O endereço IP para o painel web. (deixe em branco para escutar em todos os IPs)",
|
||||
"panelListeningDomain": "Domínio de Escuta",
|
||||
@@ -1083,12 +1079,7 @@
|
||||
"panelUrlPathDesc": "O caminho URI para o painel web. (começa com ‘/‘ e termina com ‘/‘)",
|
||||
"pageSize": "Tamanho da Paginação",
|
||||
"pageSizeDesc": "Definir o tamanho da página para a tabela de entradas. (0 = desativado)",
|
||||
"panelOutbound": "Saída do tráfego do painel",
|
||||
"panelOutboundDesc": "Encaminha as requisições do próprio painel — verificações de versão e downloads do painel/Xray, Telegram e a atualização normal de arquivos geo — por esta saída do Xray para contornar a filtragem de GitHub/Telegram no servidor. Uma entrada ponte local é adicionada automaticamente à configuração em execução e aplicada ao vivo. A Atualização Automática de Geodata nativa do Xray não é afetada; ela tem sua própria saída de download. Deixe vazio para conexão direta.",
|
||||
"panelOutboundPh": "Conexão direta",
|
||||
"datepicker": "Tipo de Calendário",
|
||||
"datepickerPlaceholder": "Selecionar data",
|
||||
"datepickerDescription": "Tarefas agendadas serão executadas com base neste calendário.",
|
||||
"oldUsername": "Nome de Usuário Atual",
|
||||
"currentPassword": "Senha Atual",
|
||||
"newUsername": "Novo Nome de Usuário",
|
||||
@@ -1104,22 +1095,6 @@
|
||||
"subSettings": "Assinatura",
|
||||
"subEnable": "Ativar Serviço de Assinatura",
|
||||
"subEnableDesc": "Ativa o serviço de assinatura.",
|
||||
"subJsonEnable": "Ativar/Desativar o endpoint de assinatura JSON de forma independente.",
|
||||
"subJsonEnableTitle": "Assinatura JSON",
|
||||
"subClashEnableTitle": "Assinatura Clash / Mihomo",
|
||||
"subFormatsTipTitle": "Configurações de assinatura específicas por formato",
|
||||
"subFormatsTipDesc": "Configure separadamente os caminhos de URL, URLs reversas e a detecção automática de clientes para JSON e Clash / Mihomo.",
|
||||
"subFormatsTipAction": "Abrir formatos de assinatura",
|
||||
"subJsonAutoDetect": "Detectar clientes Xray JSON automaticamente",
|
||||
"subJsonAutoDetectDesc": "Quando ativado, clientes compatíveis reconhecidos que solicitarem a URL de assinatura padrão receberão automaticamente uma matriz de configurações Xray JSON. Os outros clientes manterão a resposta bruta/Base64. Requer a assinatura JSON ativada e a reinicialização do painel.",
|
||||
"subJsonAlwaysArray": "Sempre retornar uma matriz JSON",
|
||||
"subJsonAlwaysArrayDesc": "Retorna o endpoint JSON explícito como matriz mesmo com apenas um perfil, conforme o padrão XTLS. Respostas JSON detectadas automaticamente sempre usam matrizes. Desative para preservar a resposta legada de objeto único.",
|
||||
"subJsonUserAgentRegex": "Expressão User-Agent do Xray JSON",
|
||||
"subJsonUserAgentRegexDesc": "Expressão regular Go RE2 comparada com o User-Agent do cliente para selecionar automaticamente o formato Xray JSON na URL de assinatura padrão. Vazia por padrão, então a detecção automática permanece desativada até você definir um padrão para os clientes que deseja atender. Os outros clientes mantêm a resposta bruta/Base64. Reinicie o painel após alterá-la.",
|
||||
"subClashAutoDetect": "Detectar clientes Clash/Mihomo automaticamente",
|
||||
"subClashAutoDetectDesc": "Quando ativado, clientes Clash/Mihomo reconhecidos que solicitarem a URL de assinatura padrão receberão automaticamente YAML do Clash. Os navegadores continuarão exibindo a página de assinatura, os outros clientes manterão a resposta bruta/Base64 e as URLs explícitas de JSON e Clash continuarão disponíveis. Requer a assinatura Clash/Mihomo ativada e a reinicialização do painel para aplicar a alteração.",
|
||||
"subClashUserAgentRegex": "Expressão User-Agent do Clash/Mihomo",
|
||||
"subClashUserAgentRegexDesc": "Expressão regular Go RE2 comparada com o User-Agent do cliente para reconhecer clientes Clash/Mihomo na URL de assinatura padrão. Deixe em branco para usar o padrão predefinido. Reinicie o painel após alterá-la.",
|
||||
"subTitle": "Título da Assinatura",
|
||||
"subTitleDesc": "Título exibido no cliente VPN. Suporta tokens de identidade do cliente: {{EMAIL}}, {{ID}}, {{SHORT_ID}}, {{SUB_ID}}, {{TELEGRAM_ID}}.",
|
||||
"subSupportUrl": "URL de Suporte",
|
||||
@@ -1128,23 +1103,8 @@
|
||||
"subProfileUrlDesc": "Um link para o seu site exibido no cliente VPN. Suporta tokens de identidade do cliente: {{EMAIL}}, {{ID}}, {{SHORT_ID}}, {{SUB_ID}}, {{TELEGRAM_ID}}.",
|
||||
"subAnnounce": "Anúncio",
|
||||
"subAnnounceDesc": "O texto do anúncio exibido no cliente VPN. Suporta tokens de identidade do cliente: {{EMAIL}}, {{ID}}, {{SHORT_ID}}, {{SUB_ID}}, {{TELEGRAM_ID}}.",
|
||||
"subThemeDir": "Diretório do tema de assinatura",
|
||||
"subThemeDirDesc": "Caminho absoluto para uma pasta contendo um modelo personalizado (index.html/sub.html) para a página de assinatura (ex.: /etc/3x-ui/sub_templates/my-theme/). Deixe vazio para usar a página padrão.",
|
||||
"subThemeDirDocs": "Guia de modelos ↗",
|
||||
"subEnableRouting": "Ativar roteamento",
|
||||
"subEnableRoutingDesc": "Configuração global para habilitar o roteamento no cliente VPN. (Apenas para Happ)",
|
||||
"subRoutingRules": "Regras de roteamento",
|
||||
"subRoutingRulesDesc": "Cole um deeplink happ:// pronto ou uma URL HTTPS permanente. O painel atualiza as regras remotas em segundo plano e mantém o último valor válido, sem atrasar as solicitações de assinatura. (Apenas para Happ)",
|
||||
"subHideSettings": "Ocultar configurações do servidor",
|
||||
"subHideSettingsDesc": "Ocultar a capacidade de visualizar e editar as configurações do servidor no cliente VPN. (Apenas para Happ)",
|
||||
"subIncyEnableRouting": "Ativar roteamento",
|
||||
"subIncyEnableRoutingDesc": "Injetar um perfil de roteamento no corpo da assinatura para o cliente Incy. (Apenas para Incy)",
|
||||
"subIncyRoutingRules": "Regras de roteamento",
|
||||
"subIncyRoutingRulesDesc": "Cole um deeplink incy:// pronto ou uma URL HTTPS permanente para JSON. O Incy cria um perfil de autorouting e o atualiza automaticamente. (Apenas para Incy)",
|
||||
"subClashEnableRouting": "Ativar roteamento",
|
||||
"subClashEnableRoutingDesc": "Incluir regras globais de roteamento Clash/Mihomo nas assinaturas YAML geradas.",
|
||||
"subClashRoutingRules": "Regras globais de roteamento",
|
||||
"subClashRoutingRulesDesc": "Cole regras/YAML ou uma URL HTTPS permanente. O painel a atualiza em segundo plano, importa apenas grupos, provedores de regras e regras, e preserva os nós VPN gerados e o último valor válido.",
|
||||
"subListen": "IP de Escuta",
|
||||
"subListenDesc": "O endereço IP para o serviço de assinatura. (deixe em branco para escutar em todos os IPs)",
|
||||
"subPort": "Porta de Escuta",
|
||||
@@ -1173,8 +1133,6 @@
|
||||
"trustedProxyCidrs": "CIDRs de proxy confiável",
|
||||
"trustedProxyCidrsDesc": "IPs/CIDRs separados por vírgula que podem definir os cabeçalhos host, proto e IP do cliente encaminhados.",
|
||||
"subFormats": {
|
||||
"finalMask": "Final Mask",
|
||||
"finalMaskDesc": "Injeta máscaras TCP/UDP do finalmask do Xray e parâmetros QUIC em cada perfil Xray JSON gerado. Requer um aplicativo compatível com assinaturas Xray JSON e um núcleo Xray recente.",
|
||||
"packets": "Pacotes",
|
||||
"length": "Comprimento",
|
||||
"interval": "Intervalo",
|
||||
@@ -1185,16 +1143,12 @@
|
||||
"packet": "Pacote",
|
||||
"delayMs": "Atraso (ms)",
|
||||
"applyTo": "Aplicar a",
|
||||
"addNoise": "+ Ruído",
|
||||
"concurrency": "Concorrência",
|
||||
"xudpConcurrency": "Concorrência xudp",
|
||||
"xudpUdp443": "xudp UDP 443"
|
||||
},
|
||||
"mux": "Mux",
|
||||
"muxDesc": "Transmitir múltiplos fluxos de dados independentes dentro de um fluxo de dados estabelecido.",
|
||||
"muxSett": "Configurações de Mux",
|
||||
"direct": "Conexão Direta",
|
||||
"directDesc": "Estabelece conexões diretamente com domínios ou intervalos de IP de um país específico.",
|
||||
"certs": "Certificados",
|
||||
"dateAndTime": "Data e Hora",
|
||||
"proxyAndServer": "Proxy e Servidor",
|
||||
@@ -1204,7 +1158,6 @@
|
||||
"language": "Idioma",
|
||||
"security": {
|
||||
"admin": "Credenciais de administrador",
|
||||
"twoFactorModalError": "Código incorreto",
|
||||
"show": "Mostrar",
|
||||
"hide": "Ocultar",
|
||||
"apiTokenNew": "Novo token",
|
||||
@@ -1226,9 +1179,6 @@
|
||||
"getOutboundTrafficError": "Erro ao obter tráfego de saída",
|
||||
"resetOutboundTrafficError": "Erro ao redefinir tráfego de saída"
|
||||
},
|
||||
"eventOutboundDown": "Inativo",
|
||||
"eventOutboundUp": "Ativo",
|
||||
"eventXrayCrash": "Falha",
|
||||
"eventNodeDown": "Inativo",
|
||||
"eventNodeUp": "Ativo",
|
||||
"eventCPUHigh": "CPU alta (%)",
|
||||
@@ -1244,59 +1194,6 @@
|
||||
},
|
||||
"secretClear": "Limpar",
|
||||
"secretClearUndo": "Desfazer limpeza",
|
||||
"calendarGregorian": "Gregorian (Standard)",
|
||||
"calendarJalalian": "Jalalian (شمسی)",
|
||||
"ipLimitAllowlist": "Lista de permissões do limite de IP",
|
||||
"ipLimitAllowlistDesc": "Endereços e redes que o limite de IP nunca conta nem bane, para que um endereço compartilhado de escritório ou campus não esgote o limite de um cliente. IPs/CIDRs separados por vírgula.",
|
||||
"subBalancers": {
|
||||
"menu": "Balanceadores de assinatura",
|
||||
"title": "Balanceador de assinatura",
|
||||
"add": "Adicionar balanceador",
|
||||
"desc": "Cada balanceador ativo é adicionado à assinatura JSON como um perfil extra que escolhe automaticamente o melhor endpoint entre os inbounds selecionados.",
|
||||
"remark": "Descrição",
|
||||
"remarkPlaceholder": "Auto · mais rápido",
|
||||
"strategy": "Estratégia",
|
||||
"strategyLeastLoad": "Menor carga",
|
||||
"strategyLeastPing": "Menor ping",
|
||||
"strategyRandom": "Aleatório",
|
||||
"strategyRoundRobin": "Round robin",
|
||||
"sortOrder": "Ordem",
|
||||
"sortOrderHelp": "Posição na lista da assinatura, intercalada com a ordem dos inbounds; em caso de empate, o balanceador vem depois do inbound.",
|
||||
"inbounds": "Inbounds",
|
||||
"inboundsCount": "{count} Inbounds",
|
||||
"enabled": "Ativado",
|
||||
"empty": "Ainda não há balanceadores",
|
||||
"deleteConfirm": "Excluir este balanceador?",
|
||||
"errRemarkRequired": "A descrição é obrigatória",
|
||||
"errInboundsRequired": "Selecione ao menos um inbound",
|
||||
"errSortOrder": "A ordem deve ser um inteiro ≥ 1",
|
||||
"toasts": {
|
||||
"list": "Falha ao listar os balanceadores de assinatura",
|
||||
"create": "Falha ao criar o balanceador de assinatura",
|
||||
"update": "Falha ao atualizar o balanceador de assinatura",
|
||||
"delete": "Falha ao excluir o balanceador de assinatura",
|
||||
"invalidId": "Id inválido"
|
||||
},
|
||||
"tabBalancers": "Balanceadores",
|
||||
"tabObservatory": "Observatório",
|
||||
"observatory": {
|
||||
"title": "Observatório do balanceador",
|
||||
"desc": "Parâmetros de probe para o burstObservatory embutido em cada perfil leastPing/leastLoad. random/roundRobin não geram observatório. Salvo como ajuste global da assinatura JSON.",
|
||||
"destination": "URL de probe",
|
||||
"destinationDesc": "Endereço que o cliente sonda para medir cada saída membro.",
|
||||
"connectivity": "URL de conectividade",
|
||||
"connectivityDesc": "Endereço opcional para verificar uma vez que o membro alcança o destino. Vazio para pular.",
|
||||
"interval": "Intervalo de probe",
|
||||
"intervalDesc": "Tempo entre rodadas de probe, p. ex. 1m.",
|
||||
"timeout": "Tempo limite de probe",
|
||||
"timeoutDesc": "Tempo limite de cada probe, p. ex. 5s.",
|
||||
"sampling": "Amostragem",
|
||||
"samplingDesc": "Número de probes consecutivos para média de estabilidade.",
|
||||
"httpMethod": "Método HTTP",
|
||||
"httpMethodDesc": "Método usado nas requisições de probe.",
|
||||
"note": "Balanceadores leastPing/leastLoad sempre carregam um burstObservatory. Esta opção personaliza seus parâmetros de probe — desligue-a para usar os padrões integrados. As alterações se aplicam após reiniciar o painel."
|
||||
}
|
||||
},
|
||||
"TGBotSettings": "Bot do Telegram",
|
||||
"notifications": "Notificações",
|
||||
"notifyTime": {
|
||||
@@ -1640,12 +1537,8 @@
|
||||
"SuccessResetTraffic": "📧 Email: {{ .ClientEmail }}\n🏁 Resultado: ✅ Sucesso",
|
||||
"FailedResetTraffic": "📧 Email: {{ .ClientEmail }}\n🏁 Resultado: ❌ Falhou \n\n🛠️ Erro: [ {{ .ErrorMessage }} ]",
|
||||
"FinishProcess": "🔚 Processo de redefinição de tráfego concluído para todos os clientes.",
|
||||
"eventOutboundDown": "O outbound {{ .Tag }} está INATIVO",
|
||||
"eventOutboundUp": "O outbound {{ .Tag }} está ATIVO",
|
||||
"eventErrorDetail": "Erro: {{ .Error }}",
|
||||
"eventDelayDetail": "Latência: {{ .Delay }}ms",
|
||||
"eventXrayCrash": "O Xray FALHOU",
|
||||
"eventXrayCrashError": "Erro: {{ .Error }}",
|
||||
"eventNodeDown": "O nó {{ .Name }} está INATIVO",
|
||||
"eventNodeUp": "O nó {{ .Name }} está ATIVO",
|
||||
"eventLoginFallback": "Falha de login a partir de {{ .Source }}",
|
||||
|
||||
Reference in New Issue
Block a user