// i18n.jsx — Internationalisation home-made (4 langues)
// Sans dépendance externe pour rester compat React+Babel CDN.
//
// Usage :
//   import { t } from window.AE_I18N
//   t('common.save')                        → "Enregistrer" / "Save" / "Speichern" / "Guardar"
//   t('visites.create_btn')                 → "Nouvelle visite" / "New visit" / …
//   t('common.welcome', { name: 'Jean' })   → "Bienvenue Jean" (interpolation {name})
//
// Switch langue : window.AE_I18N.setLocale('en') puis reload (ou émet ae:locale-changed)

(function () {
  const STORAGE_KEY = 'ae_locale';
  const DEFAULT_LOCALE = 'fr';
  const SUPPORTED = ['fr', 'en', 'de', 'es'];

  // Auto-detect navigateur la 1ère fois
  function detectLocale() {
    try {
      const stored = localStorage.getItem(STORAGE_KEY);
      if (stored && SUPPORTED.includes(stored)) return stored;
      const nav = (navigator.language || 'fr').slice(0, 2).toLowerCase();
      return SUPPORTED.includes(nav) ? nav : DEFAULT_LOCALE;
    } catch (_) { return DEFAULT_LOCALE; }
  }

  // ─── Dictionnaires ─────────────────────────────────────────────────────
  const TRANSLATIONS = {
    fr: {
      'common.save': 'Enregistrer',
      'common.cancel': 'Annuler',
      'common.delete': 'Supprimer',
      'common.edit': 'Éditer',
      'common.close': 'Fermer',
      'common.confirm': 'Confirmer',
      'common.loading': 'Chargement…',
      'common.search': 'Rechercher…',
      'common.welcome': 'Bienvenue {name}',
      'common.actions': 'Actions',
      'common.status': 'Statut',
      'common.refresh': 'Actualiser',
      'common.export': 'Exporter',
      'common.import': 'Importer',
      'common.new': 'Nouveau',
      'common.required': 'Requis',
      'common.optional': 'Optionnel',
      'common.none': 'Aucun',
      'auth.login': 'Connexion',
      'auth.email': 'Email',
      'auth.password': 'Mot de passe',
      'auth.signin': 'Se connecter',
      'auth.logout': 'Déconnexion',
      'auth.forgot': 'Mot de passe oublié',
      'nav.dashboard': 'Cockpit',
      'nav.crm': 'CRM Clients',
      'nav.dossiers': 'Dossiers CEE',
      'nav.visites': 'Visites IA',
      'nav.solar': 'Studio solaire',
      'nav.devis': 'Devis',
      'nav.signatures': 'Signatures',
      'nav.settings': 'Paramètres',
      'nav.communication': 'Communication',
      'nav.calendar': 'Calendrier',
      'visites.title': 'Visites techniques',
      'visites.create_btn': 'Nouvelle visite',
      'visites.empty': 'Aucune visite terrain',
      'crm.title': 'CRM Clients',
      'crm.contacts': 'Contacts',
      'crm.organizations': 'Organisations',
      'dossiers.title': 'Cycle de vie des dossiers',
      'dossiers.empty': 'Aucun dossier CEE',
      'settings.title': 'Paramètres',
      'settings.crm': 'CRM Clients',
      'settings.solaire': 'Solaire',
      'settings.communication': 'Communication',
      'settings.visites': 'Visites IA',
      'settings.dossiers': 'Dossiers CEE',
      'toast.saved': '✓ Enregistré',
      'toast.deleted': 'Supprimé',
      'toast.error_save': 'Erreur lors de la sauvegarde',
    },
    en: {
      'common.save': 'Save',
      'common.cancel': 'Cancel',
      'common.delete': 'Delete',
      'common.edit': 'Edit',
      'common.close': 'Close',
      'common.confirm': 'Confirm',
      'common.loading': 'Loading…',
      'common.search': 'Search…',
      'common.welcome': 'Welcome {name}',
      'common.actions': 'Actions',
      'common.status': 'Status',
      'common.refresh': 'Refresh',
      'common.export': 'Export',
      'common.import': 'Import',
      'common.new': 'New',
      'common.required': 'Required',
      'common.optional': 'Optional',
      'common.none': 'None',
      'auth.login': 'Login',
      'auth.email': 'Email',
      'auth.password': 'Password',
      'auth.signin': 'Sign in',
      'auth.logout': 'Sign out',
      'auth.forgot': 'Forgot password',
      'nav.dashboard': 'Cockpit',
      'nav.crm': 'CRM',
      'nav.dossiers': 'CEE Files',
      'nav.visites': 'AI Visits',
      'nav.solar': 'Solar Studio',
      'nav.devis': 'Quotes',
      'nav.signatures': 'Signatures',
      'nav.settings': 'Settings',
      'nav.communication': 'Communication',
      'nav.calendar': 'Calendar',
      'visites.title': 'Technical visits',
      'visites.create_btn': 'New visit',
      'visites.empty': 'No field visit',
      'crm.title': 'Customer CRM',
      'crm.contacts': 'Contacts',
      'crm.organizations': 'Organizations',
      'dossiers.title': 'File lifecycle',
      'dossiers.empty': 'No CEE file',
      'settings.title': 'Settings',
      'settings.crm': 'Customer CRM',
      'settings.solaire': 'Solar',
      'settings.communication': 'Communication',
      'settings.visites': 'AI Visits',
      'settings.dossiers': 'CEE Files',
      'toast.saved': '✓ Saved',
      'toast.deleted': 'Deleted',
      'toast.error_save': 'Save error',
    },
    de: {
      'common.save': 'Speichern',
      'common.cancel': 'Abbrechen',
      'common.delete': 'Löschen',
      'common.edit': 'Bearbeiten',
      'common.close': 'Schließen',
      'common.confirm': 'Bestätigen',
      'common.loading': 'Lädt…',
      'common.search': 'Suchen…',
      'common.welcome': 'Willkommen {name}',
      'common.actions': 'Aktionen',
      'common.status': 'Status',
      'common.refresh': 'Aktualisieren',
      'common.export': 'Exportieren',
      'common.import': 'Importieren',
      'common.new': 'Neu',
      'common.required': 'Erforderlich',
      'common.optional': 'Optional',
      'common.none': 'Keine',
      'auth.login': 'Anmeldung',
      'auth.email': 'E-Mail',
      'auth.password': 'Passwort',
      'auth.signin': 'Anmelden',
      'auth.logout': 'Abmelden',
      'auth.forgot': 'Passwort vergessen',
      'nav.dashboard': 'Cockpit',
      'nav.crm': 'CRM',
      'nav.dossiers': 'CEE-Akten',
      'nav.visites': 'KI-Besuche',
      'nav.solar': 'Solar-Studio',
      'nav.devis': 'Angebote',
      'nav.signatures': 'Unterschriften',
      'nav.settings': 'Einstellungen',
      'nav.communication': 'Kommunikation',
      'nav.calendar': 'Kalender',
      'visites.title': 'Technische Besuche',
      'visites.create_btn': 'Neuer Besuch',
      'visites.empty': 'Kein Außendienstbesuch',
      'crm.title': 'Kunden-CRM',
      'crm.contacts': 'Kontakte',
      'crm.organizations': 'Organisationen',
      'dossiers.title': 'Aktenlebenszyklus',
      'dossiers.empty': 'Keine CEE-Akte',
      'settings.title': 'Einstellungen',
      'settings.crm': 'Kunden-CRM',
      'settings.solaire': 'Solar',
      'settings.communication': 'Kommunikation',
      'settings.visites': 'KI-Besuche',
      'settings.dossiers': 'CEE-Akten',
      'toast.saved': '✓ Gespeichert',
      'toast.deleted': 'Gelöscht',
      'toast.error_save': 'Speicherfehler',
    },
    es: {
      'common.save': 'Guardar',
      'common.cancel': 'Cancelar',
      'common.delete': 'Eliminar',
      'common.edit': 'Editar',
      'common.close': 'Cerrar',
      'common.confirm': 'Confirmar',
      'common.loading': 'Cargando…',
      'common.search': 'Buscar…',
      'common.welcome': 'Bienvenido {name}',
      'common.actions': 'Acciones',
      'common.status': 'Estado',
      'common.refresh': 'Actualizar',
      'common.export': 'Exportar',
      'common.import': 'Importar',
      'common.new': 'Nuevo',
      'common.required': 'Requerido',
      'common.optional': 'Opcional',
      'common.none': 'Ninguno',
      'auth.login': 'Iniciar sesión',
      'auth.email': 'Correo',
      'auth.password': 'Contraseña',
      'auth.signin': 'Iniciar sesión',
      'auth.logout': 'Cerrar sesión',
      'auth.forgot': 'Contraseña olvidada',
      'nav.dashboard': 'Cockpit',
      'nav.crm': 'CRM',
      'nav.dossiers': 'Expedientes CEE',
      'nav.visites': 'Visitas IA',
      'nav.solar': 'Estudio solar',
      'nav.devis': 'Presupuestos',
      'nav.signatures': 'Firmas',
      'nav.settings': 'Ajustes',
      'nav.communication': 'Comunicación',
      'nav.calendar': 'Calendario',
      'visites.title': 'Visitas técnicas',
      'visites.create_btn': 'Nueva visita',
      'visites.empty': 'Sin visitas',
      'crm.title': 'CRM Clientes',
      'crm.contacts': 'Contactos',
      'crm.organizations': 'Organizaciones',
      'dossiers.title': 'Ciclo de vida',
      'dossiers.empty': 'Sin expediente CEE',
      'settings.title': 'Ajustes',
      'settings.crm': 'CRM Clientes',
      'settings.solaire': 'Solar',
      'settings.communication': 'Comunicación',
      'settings.visites': 'Visitas IA',
      'settings.dossiers': 'Expedientes CEE',
      'toast.saved': '✓ Guardado',
      'toast.deleted': 'Eliminado',
      'toast.error_save': 'Error al guardar',
    },
  };

  let _locale = detectLocale();

  function t(key, vars) {
    const dict = TRANSLATIONS[_locale] || TRANSLATIONS[DEFAULT_LOCALE];
    let str = dict[key] || TRANSLATIONS[DEFAULT_LOCALE][key] || key;
    if (vars && typeof vars === 'object') {
      for (const k in vars) {
        str = str.replace(new RegExp('\\{' + k + '\\}', 'g'), vars[k]);
      }
    }
    return str;
  }

  function setLocale(locale) {
    if (!SUPPORTED.includes(locale)) return false;
    _locale = locale;
    try { localStorage.setItem(STORAGE_KEY, locale); } catch (_) {}
    document.documentElement.lang = locale;
    window.dispatchEvent(new CustomEvent('ae:locale-changed', { detail: locale }));
    return true;
  }

  function getLocale() { return _locale; }
  function getSupported() { return [...SUPPORTED]; }

  // Set HTML lang au boot
  try { document.documentElement.lang = _locale; } catch (_) {}

  window.AE_I18N = { t, setLocale, getLocale, getSupported, TRANSLATIONS };
  window.t = t; // shortcut global
})();
