Files
granja-infra 5cc7935b54 feat(zonemaster.es): modo oscuro de tres estados y arreglo real de "Ultimos analisis"
Modo oscuro
-----------
Selector de tres estados (automatico -> claro -> oscuro), no un interruptor
de dos: "automatico" es el estado de partida y sigue al sistema operativo
mientras no se toque. La eleccion explicita se guarda en localStorage y gana
sobre el sistema en ambos sentidos. Un script `is:inline` en el <head> aplica
`data-theme` antes del primer pintado, asi que no hay destello blanco.

Hubo que redefinir las RAMPAS de la paleta, no solo la capa semantica: casi
todos los componentes (cabecera, tarjeta del formulario, menu, pie, botones,
chips) leen `--color-palette-*` directamente, y tocando solo
`--color-background`/`--color-text` la cabecera y la tarjeta se quedaban en
lavanda claro sobre fondo oscuro. Las rampas de severidad son la excepcion
deliberada: de esas solo se invierten el tinte de fondo (-10) y el texto que
va encima (-90), porque los rellenos -30/-50/-70 son la senal de gravedad y
moverlos rompe el contraste del distintivo y el orden error < critico.

Cuatro excepciones se escriben como reglas de componente porque un mismo
token hace dos trabajos opuestos: texto sobre relleno amarillo, el chip de
filtro (que fijaba `background: white` a pelo), el selector de idioma (idem,
mas su flecha SVG incrustada con trazo oscuro) y el logotipo, que es un mapa
de bits en base64 dentro de un .svg y por tanto no tiene ningun `fill` que
redefinir -- se le da la vuelta con invert + hue-rotate, que conserva el tono
del corazon rosa y de la marca de afnic.

Verificado con un barrido automatico de contraste sobre 7 paginas x 2 temas:
0 elementos por debajo de 3:1. El tema claro queda byte a byte como estaba.

"Ultimos analisis"
------------------
Llevaba vacio desde siempre por una causa distinta de la que se creia. El
bloque lleva `define:vars`, lo que obliga a Astro a emitirlo como script
CLASICO en vez de como modulo; el `import.meta.env.BASE_URL` que tenia dentro
es entonces un error de sintaxis que aborta el fichero entero antes de la
primera linea, asi que el fetch nunca llegaba a ejecutarse.

El parche del 2026-09-15 (repartir copias del JSON a cada carpeta de idioma
desde el cron) atacaba un sintoma que no existia: el 404 de
/es/recent-scans.json era real, pero lo provocaba la comprobacion manual, no
la pagina. Quitadas las dos apariciones de `import.meta` del bloque, la lista
se pinta en los 11 idiomas leyendo la ruta absoluta /recent-scans.json, y el
reparto por idioma ya no hace falta.
2026-09-21 21:52:45 +02:00

96 lines
4.5 KiB
JSON

{
"startTestNav": "Iniciar proba",
"faqNav": "Preguntas frecuentes",
"welcome": "Benvido a Zonemaster",
"startTestTitle": "Comproba o estado do teu dominio",
"runTestTitle": "Proba o teu dominio",
"faqTitle": "Preguntas frecuentes",
"resultTitle": "Resultado da proba",
"langLabel": "Cambiar de idioma",
"startTestBtn": "Executar a proba",
"runningTest": "Executando a proba...",
"menu": "Menú",
"close": "Pechar",
"domain": "Dominio",
"domainName": "Nome de dominio",
"showOptions": "Amosar as opcións",
"hideOptions": "Agochar as opcións",
"noticeHeading": "Atención! Máis información sobre a proba sen delegación",
"noticeLink": "/gl/faq/#undelegated",
"noticeText": "Que é unha proba dun dominio sen delegación?",
"nameServers": "Servidores de nomes",
"nameserver": "Servidor de nomes {index}",
"deleteNameserver": "Eliminar o servidor de nomes {index}",
"name": "Nome",
"addressOptional": "Enderezo (opcional)",
"fetchNameservers": "Obter os servidores de nomes da zona superior",
"noNameservers": "Non se atoparon servidores de nomes na zona superior",
"fetching": "Obtendo...",
"DSRecords": "Rexistros DS",
"dsRecord": "Rexistro DS {index}",
"deleteDSRecord": "Eliminar o rexistro DS {index}",
"fetchDSRecords": "Obter os DS da zona superior",
"noDSRecords": "Non se atoparon rexistros DS na zona superior",
"keytag": "Etiqueta da chave",
"algorithm": "Algoritmo",
"digestType": "Tipo de resumo",
"digest": "Resumo",
"deleteRow": "Eliminar a fila",
"general": "Xeral",
"disable": "Desactivar",
"only": "só",
"ipv4AndIpv6": "IPv4 e IPv6",
"resetForm": "Restablecer o formulario",
"programVersions": "Versións do programa",
"sourceCode": "Código fonte",
"documentation": "Documentación",
"copyright": "Dereitos de autor © AFNIC e The Swedish Internet Foundation. Todos os dereitos reservados",
"infoHeading1": "Que é Zonemaster?",
"infoPreamble": "Fai unha revisión completa do teu dominio. Zonemaster axúdache a avaliar o seu estado.",
"infoTextParagraph1": "Cando envías un dominio a Zonemaster, a ferramenta examina o seu estado de arriba abaixo na árbore DNS.",
"infoTextStrong": "Zonemaster realiza moitas probas,",
"infoTextParagraph2": "como comprobar as sinaturas DNSSEC, o acceso aos distintos servidores e a validez dos enderezos IP.",
"infoHeading2": "Unha nota sobre o DNS",
"infoTextParagraph3": "O sistema de nomes de dominio asocia nomes de dominio con enderezos IP.",
"img1Alt": "Unha persoa mirando un computador",
"img2Alt": "O mundo conectado por unha rede",
"faqPreamble": "Aquí atoparás respostas a preguntas habituais sobre Zonemaster.",
"faqTextParagraph1": "Se aínda non atopas a información que buscas, podes contactar co equipo de Zonemaster mediante a",
"faqParagraph1Link": "lista de correo de usuarios, o xestor de incidencias ou o enderezo electrónico de contacto.",
"history": "Historial",
"testHistory": "Historial de probas",
"undelegated": "Sen delegación",
"delegated": "Delegado",
"historyAll": "Todo",
"all": "Todo",
"info": "Información",
"notice": "Aviso",
"warning": "Advertencia",
"error": "Erro",
"critical": "Crítico",
"expandAll": "Despregar todos os módulos",
"collapseAll": "Pregar todos os módulos",
"search": "Buscar",
"searchInText": "Buscar texto nas mensaxes",
"testResultFor": "Resultado da proba de",
"createdOn": "Creado o",
"filterSeverityLevels": "Filtrar os niveis de gravidade",
"profile": "Perfil",
"tldURL": "URL do TLD",
"exportResult": "Exportar",
"exportJson": "JSON",
"exportHtml": "HTML",
"exportCsv": "CSV",
"exportText": "Texto",
"share": "Compartir",
"dnsIntroNav": "Que é o DNS",
"dnsRecordsNav": "Rexistros DNS",
"recentScansTitle": "Últimas análises",
"recentScansEmpty": "Aínda non hai análises recentes para amosar.",
"recentScansError": "Agora mesmo non se poden cargar as análises recentes.",
"cloudhostTitle": "DNS resiliente para clientes de CloudHost.es",
"cloudhostText": "O DNS round-robin pode repartir consultas entre varios enderezos, mentres que o anycast permite anunciar o mesmo servizo DNS desde distintas localizacións de rede. CloudHost.es pode axudar os seus clientes a valorar estas opcións segundo a súa arquitectura.",
"adSlotLabel": "Espazo publicitario reservado",
"themeToggle": "Cambiar tema"
}