import { NextResponse } from 'next/server';
import type { NextRequest } from 'next/server';

// Liste des locales supportées
const locales = ['fr', 'en'] as const;

// Fonction pour détecter la langue
function detectLanguage(request: NextRequest): typeof locales[number] {
  const acceptLanguage = request.headers.get('accept-language') || '';
  return acceptLanguage.toLowerCase().startsWith('fr') ? 'fr' : 'en';
}

export function middleware(request: NextRequest) {
  // Ignorer les fichiers statiques et les API
  if (
    request.nextUrl.pathname.startsWith('/_next') ||
    request.nextUrl.pathname.startsWith('/api') ||
    request.nextUrl.pathname.match(/\.(?:jpg|jpeg|gif|png|svg|ico|webp|js|css|woff|woff2)$/)
  ) {
    return;
  }

  // Obtenir le chemin actuel
  const pathname = request.nextUrl.pathname;

  // Vérifier si une locale est déjà dans le chemin
  const pathnameHasLocale = locales.some(
    locale => pathname.startsWith(`/${locale}/`) || pathname === `/${locale}`
  );

  if (pathnameHasLocale) return;

  // Détecter la langue préférée
  const locale = detectLanguage(request);
  
  // Construire la nouvelle URL avec la locale
  const newUrl = new URL(`/${locale}${pathname}`, request.url);
  
  // Préserver les paramètres d'URL existants
  const searchParams = request.nextUrl.searchParams;
  searchParams.forEach((value, key) => {
    newUrl.searchParams.set(key, value);
  });
  
  // Rediriger vers la nouvelle URL
  return NextResponse.redirect(newUrl);
}

export const config = {
  matcher: ['/((?!api|_next|_vercel|.*\\..*).*)']
}; 