# Which Slidev deck projects onto which site pages. # # ONE SOURCE PER PAGE, with the deck's `source` as the default. # # The first shape of this file said "one source, N pages" — true only for a deck that is not # translated. A bilingual deck is TWO sources, and without a per-page source the only way to have # an English page is to serve Spanish slides under an English URL. A page that lies about its # language is worse than a page that does not exist. # # So: `pages[].source` overrides the deck's. Omit a page and that language simply has no page. { decks = [ { source = "ontology_slides.md", # relative to outreach/presentation/ id = "ontoref-ontologia-reflexion", pages = [ { lang = "es", slug = "ontoref-ontologia-reflexion" }, # The English page has its OWN source. The deck is Spanish (the "46/57 mix" I first # reported was a false signal — my classifier counted `runtime`, `Nickel`, `commit` as # English; the prose is clean Spanish). ontology_slides_en.md is a controlled translation # that keeps the product name, the coined terms and the glossary lexicon, and uses the # REAL English field names for the code (nodes/invariant/description/…) — which the # Spanish deck localizes and so, on that one point, the English deck is more faithful. { lang = "en", slug = "ontoref-ontology-and-reflection", source = "ontology_slides_en.md" }, ], }, { # An intro to ontoref for an INFRA audience: "does AI manage your infra — do you know what's # happening?". Authored in Spanish (ai-infra_es.md), translated to English (ai-infra.md) as a # faithful counterpart — same content, glossary lexicon and real English field names in the # code. Two sources → one build/capture/asset-dir each. source = "ai-infra_es.md", id = "ai-infra", pages = [ { lang = "es", slug = "la-ia-gestiona-tu-infra" }, { lang = "en", slug = "does-ai-manage-your-infra", source = "ai-infra.md" }, ], }, { source = "rustikon_es.md", id = "rustikon", pages = [ { lang = "es", slug = "por-que-necesite-rust" }, { lang = "en", slug = "why-i-needed-rust", source = "rustikon.md" }, ], }, ], # Classes the site is entitled to carry INTO the deck. Everything else of the site's # is reverted at the boundary. `gloss-`: the glossary decorates deck text — the whole # point of the projection. `deck-`: the projection's own chrome (card, switcher, zoom). boundary_allow = ["[class*=\"gloss-\"]", "[class*=\"deck-\"]"], # The URL category segment, per language. The route is /recursos/{category}/{slug}; the KIND # localizes (recursos↔resources) but {category} is filled literally from the content, so an ES # deck under category "decks" gives /recursos/decks/… — Spanish path, English word. Localizing # the category (es = "presentaciones") keeps the whole ES URL Spanish. Runtime route, no rebuild; # registers on server restart. category = { es = "presentaciones", en = "decks" }, # Slidev's native slide geometry. The WIDTH is the scaling base; the height is only a # floor — 12 of 16 slides in this deck hold more than 552px, so the card grows to its # measured content instead of cutting it. slide = { width = 980, height = 552 }, # The chrome is the SITE's UI, so it speaks the page's language. One capture, N pages: # the deck body is shared, the wrapper around it is not. i18n = { es = { read = "Leer todo", slider = "Diapositivas", index = "Índice", index_head = "Índice", slides = "diapositivas", prev = "Anterior", next = "Siguiente", zoom = "Ampliar diapositiva", slide = "Diapositiva", aria = "Presentación de %n diapositivas. Con el foco puesto, las flechas o la barra espaciadora navegan.", help = "Cómo usar", help_title = "Cómo usar esta presentación", help_items = [ "Diapositivas / Leer todo — pasa las slides una a una, o vélas todas apiladas (ahí funciona buscar con Ctrl+F, seleccionar y copiar el texto).", "Índice — muestra u oculta el índice lateral; al pulsar una entrada saltas a esa slide.", "Términos del glosario — algunas palabras llevan un realce ámbar: pasa el ratón por encima (o púlsalas en móvil) para ver una definición breve.", "Teclado — con la presentación seleccionada: o Espacio avanzan, o Shift+Espacio retroceden.", "Ampliar — el botón abre la slide a pantalla completa; Esc la cierra.", "Copiar código — pasa el ratón por un bloque de código y pulsa el botón de arriba a la derecha para copiarlo.", ], }, en = { read = "Read all", slider = "Slides", index = "Index", index_head = "Index", slides = "slides", prev = "Previous", next = "Next", zoom = "Enlarge slide", slide = "Slide", aria = "Deck of %n slides. With focus on it, arrows or the space bar navigate.", help = "How to use", help_title = "How to use this deck", help_items = [ "Slides / Read all — step through one at a time, or see them all stacked (there Ctrl+F, select and copy the text all work).", "Index — shows or hides the side index; clicking an entry jumps to that slide.", "Glossary terms — some words carry a faint amber highlight: hover them (or tap on mobile) for a short definition.", "Keyboard — with the deck focused: or Space advance, or Shift+Space go back.", "Enlarge — the button opens the slide full-screen; Esc closes it.", "Copy code — hover a code block and press the button at its top-right to copy it.", ], }, }, }