Zum Inhalt springen

Slug Resolver

Dieser Inhalt ist noch nicht in deiner Sprache verfügbar.

function createSlugResolver(
slugMaps: Record<string, SlugMap>,
defaultLocale: string
): {
getLocalizedSlug: (category: string, canonicalSlug: string, locale: string) => string;
getCanonicalSlug: (category: string, localizedSlug: string, locale: string) => string | undefined;
getAllSlugPairs: (category: string, locale: string) => Array<{ canonical: string; localized: string }>;
}

Returns functions for resolving slugs between canonical (default-locale) and localized forms. When using createI18n, the first two functions are available from virtual:i18n.

getLocalizedSlug(category, canonicalSlug, locale)

Translates a canonical slug to a locale-specific slug.

Parameters:

ParameterTypeDescription
categorystringSlug map category (e.g., 'pages', 'saunas')
canonicalSlugstringThe default-locale slug
localestringTarget locale

Returns: string — the localized slug, or the canonical slug if no translation exists

Examples:

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

getCanonicalSlug(category, localizedSlug, locale)

Reverse lookup — finds the canonical slug from a localized one.

Parameters:

ParameterTypeDescription
categorystringSlug map category
localizedSlugstringThe locale-specific slug
localestringSource locale

Returns: string | undefined — the canonical slug, or undefined if not found

Examples:

getCanonicalSlug('saunas', 'modelo-165', 'es'); // "model-165"
getCanonicalSlug('saunas', 'model-165', 'en'); // "model-165"
getCanonicalSlug('saunas', 'unknown', 'es'); // undefined

getAllSlugPairs(category, locale)

Returns all canonical/localized slug pairs for a category and locale.

Parameters:

ParameterTypeDescription
categorystringSlug map category
localestringTarget locale

Returns: Array<{ canonical: string; localized: string }>

Example:

getAllSlugPairs('saunas', 'es');
// [
// { canonical: 'model-165', localized: 'modelo-165' },
// { canonical: 'model-200', localized: 'modelo-200' },
// ]