import { getRequestConfig } from 'next-intl/server';
import { notFound } from 'next/navigation';

// Langues supportées
export const locales = ['fr', 'en'] as const;
export type Locale = (typeof locales)[number];

console.log('========================================');
console.log('[i18n] ===== I18N MODULE LOADED =====');
console.log('[i18n] Supported locales:', locales);
console.log('[i18n] Locale type:', typeof locales);
console.log('[i18n] ========================================');

export default getRequestConfig(async ({ locale }) => {
  console.log('========================================');
  console.log('[i18n] ===== getRequestConfig CALLED =====');
  console.log('[i18n] Timestamp:', new Date().toISOString());
  console.log('[i18n] Requested locale:', locale);
  console.log('[i18n] Locale type:', typeof locale);
  console.log('[i18n] Supported locales:', locales);
  console.log('[i18n] Is locale valid?', locale ? locales.includes(locale as Locale) : false);
  
  // Si locale est undefined, utiliser la locale par défaut
  const resolvedLocale = locale || locales[0];
  
  // Valider que la locale entrante est supportée
  if (!resolvedLocale || !locales.includes(resolvedLocale as Locale)) {
    console.error('[i18n] ✗✗✗ INVALID LOCALE ✗✗✗');
    console.error('[i18n] Invalid locale:', locale);
    console.error('[i18n] Resolved locale:', resolvedLocale);
    console.error('[i18n] Supported locales:', locales);
    console.error('[i18n] Calling notFound()...');
    console.error('========================================');
    notFound();
  }

  console.log('[i18n] ✓ Locale validated');
  console.log('[i18n] Loading messages from: ./messages/' + resolvedLocale + '.json');
  
  try {
    const messagesModule = await import(`./messages/${resolvedLocale}.json`);
    const messages = messagesModule.default;
    
    const messageKeys = Object.keys(messages);
    const messageCount = messageKeys.length;
    const topLevelKeys = messageKeys.slice(0, 10);
    
    console.log('[i18n] ✓ Messages file loaded successfully');
    console.log('[i18n] Total top-level keys:', messageCount);
    console.log('[i18n] First 10 keys:', topLevelKeys);
    console.log('[i18n] Has "common" key?', 'common' in messages);
    console.log('[i18n] Has "navbar" key?', 'navbar' in messages);
    
    if ('common' in messages) {
      const commonKeys = Object.keys(messages.common as any);
      console.log('[i18n] Common keys count:', commonKeys.length);
      console.log('[i18n] Common keys:', commonKeys.slice(0, 5));
    }
    
    console.log('[i18n] ========================================');
    
    return {
      locale: resolvedLocale,
      messages
    };
  } catch (error) {
    console.error('[i18n] ✗✗✗ ERROR LOADING MESSAGES ✗✗✗');
    console.error('[i18n] Error:', error);
    console.error('[i18n] Error type:', error instanceof Error ? error.constructor.name : typeof error);
    if (error instanceof Error) {
      console.error('[i18n] Error message:', error.message);
      console.error('[i18n] Error stack:', error.stack);
    }
    console.error('[i18n] ========================================');
    throw error;
  }
});

