createI18n()
function createI18n(config: I18nConfig): AstroIntegrationCrea una integración de Astro que configura el enrutamiento i18n y proporciona un módulo virtual:i18n. Este es el punto de entrada principal del paquete.
Qué hace
- Auto-descubre slugs de páginas desde
pagesDirvialoadPageMapSync - Auto-descubre slugs de contenido desde
contentDirsvialoadSlugMapSync - Inyecta rutas de idioma para todos los idiomas no predeterminados usando la API
injectRoute()de Astro - Sirve un módulo Vite
virtual:i18nexportando todos los helpers y valores de configuración de i18n
Uso
import { defineConfig } from 'astro/config';import { createI18n } from '@otrodigital/astro-i18n-next';import en from './src/i18n/en.json' with { type: 'json' };import es from './src/i18n/es.json' with { type: 'json' };
export default defineConfig({ integrations: [createI18n({ defaultLocale: 'en', locales: ['en', 'es'], localeLabels: { en: 'English', es: 'Español' }, localeHtmlLang: { en: 'en', es: 'es' }, translations: { en, es }, pagesDir: 'src/pages', contentDirs: { saunas: 'src/content/saunas' }, })],});Parámetros
| Parámetro | Tipo | Descripción |
|---|---|---|
config | I18nConfig | Configuración completa de i18n. Ver Configuración. |
Valor de retorno
Devuelve un objeto AstroIntegration que pasas al array integrations en tu configuración de Astro. La integración:
- Configura los ajustes i18n integrados de Astro (
prefixDefaultLocale: false,redirectToDefaultLocale: true) - Inyecta una ruta para cada página en cada idioma no predeterminado, usando el slug traducido
- Registra un plugin de Vite que resuelve las importaciones de
virtual:i18n
El plugin de Vite
La integración incluye un plugin de Vite que sirve un módulo virtual en virtual:i18n. Este módulo se genera en tiempo de compilación y contiene:
- Función de traducción pre-inicializada (
t) - Helpers de ruta con los mapas de slugs incorporados
- Helper de contenido con el idioma predeterminado incorporado
- Funciones de resolución de slugs
- Todos los valores de configuración de idioma
Esto significa que los componentes pueden hacer import { t, localePath } from 'virtual:i18n' sin ninguna configuración en tiempo de ejecución.