Saltearse al contenido

Traducción de Slugs

La traducción de slugs te permite tener URLs específicas por idioma como /es/sobre/ en lugar de /es/about/. Hay dos mecanismos: slugs de página para archivos .astro y slugs de contenido para entradas markdown.

Slugs de página

Exporta una constante slugs desde cualquier página .astro:

src/pages/about.astro
---
export const slugs = { en: 'about', es: 'sobre' };
---

La integración los descubre en tiempo de compilación escaneando el directorio pagesDir. No se necesita configuración adicional.

Comportamiento de fallback

Las páginas sin exportación de slugs usan el nombre del archivo como slug para todos los idiomas. Por ejemplo, src/pages/contact.astro se convierte en /contact/ y /es/contact/.

Slugs de contenido

Los archivos de contenido markdown definen slugs en su frontmatter YAML:

---
slugs:
en: model-165
es: modelo-165
---

Estos se descubren cuando especificas contentDirs en la configuración:

createI18n({
// ...
contentDirs: {
saunas: 'src/content/saunas',
},
})

Resolviendo slugs

El módulo virtual:i18n exporta dos funciones para resolución de slugs:

getLocalizedSlug(category, canonicalSlug, locale)

Traduce un slug canónico (idioma predeterminado) a un slug específico del idioma:

import { getLocalizedSlug } from 'virtual:i18n';
getLocalizedSlug('saunas', 'model-165', 'es'); // "modelo-165"
getLocalizedSlug('saunas', 'model-165', 'en'); // "model-165"

getCanonicalSlug(category, localizedSlug, locale)

Búsqueda inversa — encuentra el slug canónico a partir de uno localizado:

import { getCanonicalSlug } from 'virtual:i18n';
getCanonicalSlug('saunas', 'modelo-165', 'es'); // "model-165"

El argumento category coincide con la clave usada en contentDirs (o slugMaps si se proporcionan manualmente).

Mapas de slugs manuales

Si necesitas control total, puedes proporcionar mapas de slugs directamente en lugar de auto-descubrirlos:

createI18n({
// ...
slugMaps: {
pages: {
about: { en: 'about', es: 'sobre' },
},
saunas: {
'model-165': { en: 'model-165', es: 'modelo-165' },
},
},
})

Los mapas de slugs manuales y los auto-descubiertos se fusionan, con los manuales teniendo prioridad.