Rutas Traducidas
astro-i18n-next genera rutas específicas por idioma en tiempo de compilación. El idioma predeterminado no tiene prefijo en la URL, mientras que todos los demás idiomas llevan prefijo.
Cómo funciona
Dada una página src/pages/about.astro con:
---export const slugs = { en: 'about', es: 'sobre' };---La integración genera estas rutas:
| Idioma | URL | Entrypoint de Astro |
|---|---|---|
en (predeterminado) | /about/ | src/pages/about.astro |
es | /es/sobre/ | src/pages/about.astro |
Ambas rutas renderizan el mismo componente — el idioma está disponible via Astro.locals.locale.
Usando localePath()
localePath traduce una ruta canónica (idioma predeterminado) a la URL específica del idioma:
import { localePath } from 'virtual:i18n';
localePath('en', '/about/'); // "/about/"localePath('es', '/about/'); // "/es/sobre/"localePath('es', '/saunas/model-165/'); // "/es/saunas/modelo-165/"Maneja tanto slugs de páginas como slugs de contenido, y funciona con rutas anidadas.
Rutas anidadas
Para páginas anidadas como src/pages/saunas/index.astro, solo se traduce el segmento final del slug. La estructura de directorios permanece igual:
/saunas/ → /es/saunas/ (directorio no traducido)/saunas/model-165/ → /es/saunas/modelo-165/ (slug de contenido traducido)Sin necesidad de rutas dinámicas
A diferencia de otros enfoques de i18n, no necesitas rutas catch-all como [...slug].astro. La integración usa la API injectRoute() de Astro para crear rutas concretas para cada idioma en tiempo de compilación. Esto significa:
- Pre-renderizado estático completo
- Sin coincidencia de rutas en tiempo de ejecución
- Cada ruta mapea a un componente
.astroconocido