import { getRequestConfig } from 'next-intl/server';
import { routing } from '@/i18n/routing';
import { getAvailableNamespaces } from '@/utils/i18n';
import logger from '@/utils/logger';

export default getRequestConfig(async ({ requestLocale }) => {
  let locale = await requestLocale;

  if (!locale || !routing.locales.includes(locale)) {
    locale = routing.defaultLocale;
  }

  // Charger dynamiquement les namespaces disponibles
  const namespaces = await getAvailableNamespaces(locale);
  const messages = {};

  // Charger les traductions pour chaque namespace
  await Promise.all(
    namespaces.map(async (namespace) => {
      try {
        const translations = (
          await import(`../../messages/${locale}/${namespace}.json`)
        ).default;
        messages[namespace] = translations;
      } catch (error) {
        logger.warn(
          `Erreur de chargement pour ${namespace} en ${locale}:`,
          error
        );
      }
    })
  );

  return {
    locale,
    messages,
    timeZone: 'Europe/Paris',
    formats: {
      dateTime: {
        short: {
          day: 'numeric',
          month: 'short',
          year: 'numeric',
        },
      },
    },
  };
});
