Saltearse al contenido

Helpers de Ruta

function createRouteHelpers(
defaultLocale: string,
locales: string[],
slugMaps: Record<string, SlugMap>
): {
localePath: (locale: string, path: string) => string;
switchLocalePath: (currentPath: string, targetLocale: string) => string;
getLocaleFromPath: (pathname: string) => string;
}

Devuelve tres funciones para generación de URLs con soporte de idioma. Al usar createI18n, estas están pre-configuradas y disponibles desde virtual:i18n.

localePath(locale, path)

Traduce una ruta canónica (idioma predeterminado) a una URL específica del idioma.

Parámetros:

ParámetroTipoDescripción
localestringCódigo del idioma objetivo
pathstringRuta canónica (URLs del idioma predeterminado, ej. /about/)

Devuelve: string — la ruta localizada

Ejemplos:

localePath('en', '/about/'); // "/about/"
localePath('es', '/about/'); // "/es/sobre/"
localePath('es', '/saunas/model-165/'); // "/es/saunas/modelo-165/"

Comportamiento:

  • Para el idioma predeterminado, devuelve la ruta sin cambios
  • Para otros idiomas, agrega el prefijo de idioma y traduce cada segmento de slug usando los mapas de slugs
  • Funciona tanto con slugs de páginas como de contenido

switchLocalePath(currentPath, targetLocale)

Convierte una ruta de cualquier idioma a un idioma objetivo. Esta es la función a usar para selectores de idioma.

Parámetros:

ParámetroTipoDescripción
currentPathstringRuta en cualquier idioma (ej. /es/sobre/)
targetLocalestringCódigo del idioma objetivo

Devuelve: string — la ruta en el idioma objetivo

Ejemplos:

switchLocalePath('/es/sobre/', 'en'); // "/about/"
switchLocalePath('/about/', 'es'); // "/es/sobre/"
switchLocalePath('/es/saunas/modelo-165/', 'en'); // "/saunas/model-165/"

Comportamiento:

  1. Detecta el idioma origen desde la ruta
  2. Resuelve cada segmento de slug a su forma canónica
  3. Traduce al idioma objetivo usando localePath

getLocaleFromPath(pathname)

Extrae el idioma de una ruta URL verificando el primer segmento.

Parámetros:

ParámetroTipoDescripción
pathnamestringRuta URL (ej. /es/sobre/)

Devuelve: string — el código del idioma

Ejemplos:

getLocaleFromPath('/es/sobre/'); // "es"
getLocaleFromPath('/about/'); // "en" (predeterminado)
getLocaleFromPath('/fr/contact/'); // "fr"

Comportamiento:

  • Verifica si el primer segmento de la ruta coincide con algún idioma configurado
  • Si no se encuentra coincidencia, devuelve defaultLocale