Opciones Personalizadas de i18next
astro-i18n-next usa i18next internamente. Puedes personalizar su comportamiento a través del campo de configuración i18next.
Configuración predeterminada
El traductor integrado inicializa i18next con estos valores predeterminados:
{ lng: defaultLocale, fallbackLng: defaultLocale, resources: { en: { translation: enTranslations }, es: { translation: esTranslations }, // ... uno por idioma }, interpolation: { escapeValue: false, // Seguro para set:html de Astro }, returnNull: false, // Las claves faltantes devuelven el string de la clave}Agregando opciones personalizadas
Pasa opciones extra via i18next.options:
createI18n({ // ... i18next: { options: { supportedLngs: ['en', 'es'], interpolation: { prefix: '{{', suffix: '}}', }, }, },})Estas se fusionan con los valores predeterminados usando merge superficial. Tus valores tienen prioridad.
Instancias aisladas
Cada llamada a createTranslator() crea una nueva instancia aislada de i18next usando i18next.createInstance(). Esto significa:
- Múltiples llamadas no interferirán entre sí
- Es seguro usarlo en contextos SSR
- Puedes crear diferentes traductores con diferentes configuraciones si es necesario
Limitaciones de plugins
Los plugins de i18next pasados via i18next.plugins se usan durante la llamada inicial de createTranslator(), pero no son serializables. Esto significa:
- Los plugins funcionan en tiempo de compilación cuando
createI18nse ejecuta - Los plugins no están disponibles en el módulo
virtual:i18n(que es código serializado) - Usa
i18next.optionspara cualquier configuración que necesite sobrevivir la serialización
Comportamiento de fallback
La cadena de fallback funciona así:
- Busca la clave en el idioma solicitado
- Si no se encuentra, busca la clave en
defaultLocale - Si aún no se encuentra, devuelve el string de la clave misma
Esto asegura que tu UI nunca muestre contenido en blanco — en el peor caso, muestra la traducción en inglés o el nombre de la clave.