Landing de presentación estática (SSG) con SvelteKit + adapter-static. Multiidioma (ES / EN / ZH) por rutas, prerenderizada para buen SEO.
bun install
bun run devbun run build # genera el sitio estático en build/
bun run preview # previsualiza el buildsrc/
app.html shell HTML (fuentes, <html lang>)
app.css estilos globales + design tokens
hooks.server.js fija el lang correcto al prerenderizar
lib/
config.js datos del sitio (URL, nombre, OG image)
i18n/ es.js · en.js · zh.js + index.js (locales)
actions.js acciones reutilizables: inview, countup
Seo.svelte <title>, meta, canonical, hreflang, OG/Twitter
Site.svelte compone todas las secciones para un idioma
components/ Header, Hero, Globe, Services, Ticker, Stats,
About, Cta, Footer, Brand
routes/
+page.svelte ES (<Site lang="es" />)
en/+page.svelte EN
zh/+page.svelte ZH
sitemap.xml/ sitemap autogenerado desde las rutas
Todo el texto vive en src/lib/i18n/*.js; los componentes solo reciben el
diccionario (t) como prop. Para añadir un idioma: crea su xx.js, añádelo a
i18n/index.js y crea routes/xx/+page.svelte.
- Pon la URL real y los datos en
src/lib/config.js. - Actualiza la URL del
Sitemap:enstatic/robots.txt. - Añade la imagen social en
static/y referénciala enconfig.js(ogImage).
Las rutas de idioma se generan como
en.html/zh.html(URLs limpias/en,/zh). Netlify, Vercel y Cloudflare Pages las sirven sin extensión de forma nativa.