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": "Hasi proba",
"faqNav": "Ohiko galderak",
"welcome": "Ongi etorri Zonemaster-era",
"startTestTitle": "Egiaztatu zure domeinuaren egoera",
"runTestTitle": "Probatu zure domeinua",
"faqTitle": "Ohiko galderak",
"resultTitle": "Probaren emaitza",
"langLabel": "Aldatu hizkuntza",
"startTestBtn": "Exekutatu proba",
"runningTest": "Proba exekutatzen...",
"menu": "Menua",
"close": "Itxi",
"domain": "Domeinua",
"domainName": "Domeinu-izena",
"showOptions": "Erakutsi aukerak",
"hideOptions": "Ezkutatu aukerak",
"noticeHeading": "Kontuz! Delegatu gabeko probari buruzko informazio gehiago",
"noticeLink": "/eu/faq/#undelegated",
"noticeText": "Zer da delegatu gabeko domeinu baten proba?",
"nameServers": "Izen-zerbitzariak",
"nameserver": "{index}. izen-zerbitzaria",
"deleteNameserver": "Ezabatu {index}. izen-zerbitzaria",
"name": "Izena",
"addressOptional": "Helbidea (aukerakoa)",
"fetchNameservers": "Lortu izen-zerbitzariak goragoko zonatik",
"noNameservers": "Ez da izen-zerbitzaririk aurkitu goragoko zonan",
"fetching": "Lortzen...",
"DSRecords": "DS erregistroak",
"dsRecord": "{index}. DS erregistroa",
"deleteDSRecord": "Ezabatu {index}. DS erregistroa",
"fetchDSRecords": "Lortu DS erregistroak goragoko zonatik",
"noDSRecords": "Ez da DS erregistrorik aurkitu goragoko zonan",
"keytag": "Gako-etiketa",
"algorithm": "Algoritmoa",
"digestType": "Laburpen mota",
"digest": "Laburpena",
"deleteRow": "Ezabatu errenkada",
"general": "Orokorra",
"disable": "Desgaitu",
"only": "soilik",
"ipv4AndIpv6": "IPv4 eta IPv6",
"resetForm": "Berrezarri inprimakia",
"programVersions": "Programaren bertsioak",
"sourceCode": "Iturburu-kodea",
"documentation": "Dokumentazioa",
"copyright": "Copyright © AFNIC eta The Swedish Internet Foundation. Eskubide guztiak erreserbatuta",
"infoHeading1": "Zer da Zonemaster?",
"infoPreamble": "Egin zure domeinuaren azterketa osoa. Zonemaster-ek haren egoera ebaluatzen laguntzen dizu.",
"infoTextParagraph1": "Domeinu bat Zonemaster-era bidaltzean, tresnak DNS zuhaitzean goitik behera aztertzen du haren egoera.",
"infoTextStrong": "Zonemaster-ek proba ugari egiten ditu,",
"infoTextParagraph2": "besteak beste, DNSSEC sinadurak, zerbitzarien irisgarritasuna eta IP helbideen baliozkotasuna egiaztatzea.",
"infoHeading2": "DNSari buruzko ohar bat",
"infoTextParagraph3": "Domeinu-izenen sistemak domeinu-izenak IP helbideekin lotzen ditu.",
"img1Alt": "Pertsona bat ordenagailuari begira",
"img2Alt": "Sare batek konektatutako mundua",
"faqPreamble": "Hemen aurkituko dituzu Zonemaster-i buruzko ohiko galderen erantzunak.",
"faqTextParagraph1": "Bilatzen duzun informazioa oraindik aurkitu ez baduzu, Zonemaster taldearekin harremanetan jar zaitezke honen bidez:",
"faqParagraph1Link": "erabiltzaileen posta-zerrenda, arazoen kudeatzailea edo harremanetarako helbide elektronikoa.",
"history": "Historia",
"testHistory": "Proben historia",
"undelegated": "Delegatu gabea",
"delegated": "Delegatua",
"historyAll": "Guztiak",
"all": "Guztiak",
"info": "Informazioa",
"notice": "Oharra",
"warning": "Abisua",
"error": "Errorea",
"critical": "Kritikoa",
"expandAll": "Zabaldu modulu guztiak",
"collapseAll": "Tolestu modulu guztiak",
"search": "Bilatu",
"searchInText": "Bilatu testua mezuetan",
"testResultFor": "Honen probaren emaitza:",
"createdOn": "Sortze-data:",
"filterSeverityLevels": "Iragazi larritasun-mailak",
"profile": "Profila",
"tldURL": "TLDaren URLa",
"exportResult": "Esportatu",
"exportJson": "JSON",
"exportHtml": "HTML",
"exportCsv": "CSV",
"exportText": "Testua",
"share": "Partekatu",
"dnsIntroNav": "Zer da DNSa",
"dnsRecordsNav": "DNS erregistroak",
"recentScansTitle": "Azken analisiak",
"recentScansEmpty": "Oraindik ez dago erakusteko azken analisirik.",
"recentScansError": "Une honetan ezin dira azken analisiak kargatu.",
"cloudhostTitle": "DNS sendoa CloudHost.es-eko bezeroentzat",
"cloudhostText": "Round-robin DNSak kontsultak hainbat helbideren artean bana ditzake; anycast-ek, berriz, DNS zerbitzu bera sareko kokaleku desberdinetatik iragartzea ahalbidetzen du. CloudHost.es-ek bezeroei aukera horiek beren arkitekturaren arabera aztertzen lagun diezaieke.",
"adSlotLabel": "Erreserbatutako publizitate-gunea",
"themeToggle": "Gaia aldatu"
}