Saltearse al contenido

Tipos

Todos los tipos se exportan desde el punto de entrada principal del paquete:

import type { LocaleConfig, I18nConfig, SlugMap } from '@otrodigital/astro-i18n-next';

LocaleConfig

Configuración base para ajustes de idioma.

interface LocaleConfig {
defaultLocale: string;
locales: string[];
localeLabels: Record<string, string>;
localeHtmlLang: Record<string, string>;
}
CampoDescripción
defaultLocaleCódigo del idioma predeterminado (ej., 'en')
localesTodos los códigos de idioma soportados
localeLabelsNombres legibles (ej., { en: 'English' })
localeHtmlLangValores HTML lang (ej., { en: 'en' })

SlugMap

Mapea slugs canónicos a slugs específicos del idioma.

type SlugMap = Record<string, Record<string, string>>;

Ejemplo:

const slugMap: SlugMap = {
'about': { en: 'about', es: 'sobre' },
'model-165': { en: 'model-165', es: 'modelo-165' },
};

PageEntry

Metadatos de una página descubierta.

interface PageEntry {
entrypoint: string;
slugs: Record<string, string>;
}
CampoDescripción
entrypointRuta del componente Astro (ej., 'src/pages/about.astro')
slugsSlugs de URL específicos del idioma para esta página

I18nextOptions

Configuración para plugins de i18next y opciones de inicialización personalizadas.

interface I18nextOptions {
plugins?: any[];
options?: Record<string, unknown>;
}
CampoDescripción
pluginsPlugins de i18next (ej., [ICU]) — no serializables
optionsOpciones extra de i18next.init() — serializables

I18nConfig

Configuración completa para createI18n(). Extiende LocaleConfig.

interface I18nConfig extends LocaleConfig {
translations: Record<string, Record<string, unknown>>;
slugMaps?: Record<string, SlugMap>;
pagesDir?: string;
contentDirs?: Record<string, string>;
i18next?: I18nextOptions;
}
CampoDescripción
translationsObjetos de traducción por idioma
slugMapsMapas de slugs manuales (fusionados con auto-descubiertos)
pagesDirDirectorio de páginas para auto-descubrimiento
contentDirsDirectorios de contenido para auto-descubrimiento de slugs
i18nextPlugins y opciones de i18next

I18nInstance

La forma del objeto de helpers de i18n (coincide con las exportaciones de virtual:i18n).

interface I18nInstance {
t: (locale: string, key: string) => string;
localePath: (locale: string, path: string) => string;
switchLocalePath: (currentPath: string, targetLocale: string) => string;
getLocaleFromPath: (pathname: string) => string;
localized: <T>(field: Record<string, T>, locale: string) => T;
getLocalizedSlug: (category: string, canonicalSlug: string, locale: string) => string;
getCanonicalSlug: (category: string, localizedSlug: string, locale: string) => string | undefined;
}