/* ============================================================
   Operion WTT — i18n (IT default, EN/ES/FR/DE)
   Exposes window.I18N (dictionary) + window.useI18n hook helpers
   ============================================================ */
(function () {
  const LANGS = [
    { code: 'it', label: 'Italiano', flag: '🇮🇹' },
    { code: 'en', label: 'English', flag: '🇬🇧' },
    { code: 'es', label: 'Español', flag: '🇪🇸' },
    { code: 'fr', label: 'Français', flag: '🇫🇷' },
    { code: 'de', label: 'Deutsch', flag: '🇩🇪' },
  ];

  // Each key -> { it, en, es, fr, de }
  const D = {
    // ---- App / brand ----
    'app.subtitle': { it: 'Supervisione impianto trattamento acque', en: 'Water treatment plant supervision', es: 'Supervisión de planta de tratamiento de agua', fr: 'Supervision de station de traitement', de: 'Überwachung der Wasseraufbereitungsanlage' },
    'plant.name': { it: 'Impianto Consortile Valdera', en: 'Valdera Consortium Plant', es: 'Planta Consorcial Valdera', fr: 'Station consortiale Valdera', de: 'Konsortialanlage Valdera' },

    // ---- Nav groups ----
    'grp.overview': { it: 'Panoramica', en: 'Overview', es: 'Resumen', fr: 'Vue générale', de: 'Übersicht' },
    'grp.primary': { it: 'Acque primarie', en: 'Primary water', es: 'Agua primaria', fr: 'Eaux primaires', de: 'Primärwasser' },
    'grp.waste': { it: 'Acque reflue', en: 'Wastewater', es: 'Aguas residuales', fr: 'Eaux usées', de: 'Abwasser' },
    'grp.assets': { it: 'Asset & impianto', en: 'Assets & plant', es: 'Activos y planta', fr: 'Équipements', de: 'Anlagen' },
    'grp.ops': { it: 'Operazioni', en: 'Operations', es: 'Operaciones', fr: 'Exploitation', de: 'Betrieb' },
    'grp.admin': { it: 'Amministrazione', en: 'Administration', es: 'Administración', fr: 'Administration', de: 'Verwaltung' },

    // ---- Nav items ----
    'nav.dashboard': { it: 'Dashboard', en: 'Dashboard', es: 'Panel', fr: 'Tableau de bord', de: 'Dashboard' },
    'nav.synoptic': { it: 'Sinottico impianto', en: 'Plant synoptic', es: 'Sinóptico de planta', fr: 'Synoptique', de: 'Anlagenübersicht' },
    'nav.primary': { it: 'Acque primarie', en: 'Primary water', es: 'Agua primaria', fr: 'Eaux primaires', de: 'Primärwasser' },
    'nav.potable': { it: 'Potabilizzazione', en: 'Potabilization', es: 'Potabilización', fr: 'Potabilisation', de: 'Trinkwasseraufbereitung' },
    'nav.waste': { it: 'Trattamento refluo', en: 'Wastewater treatment', es: 'Tratamiento de aguas', fr: 'Traitement des eaux usées', de: 'Abwasserbehandlung' },
    'nav.sludge': { it: 'Linea fanghi', en: 'Sludge line', es: 'Línea de fangos', fr: 'Filière boues', de: 'Schlammlinie' },
    'nav.tanks': { it: 'Serbatoi e vasche', en: 'Tanks & basins', es: 'Depósitos y tanques', fr: 'Réservoirs & bassins', de: 'Tanks & Becken' },
    'nav.pumps': { it: 'Pompe e valvole', en: 'Pumps & valves', es: 'Bombas y válvulas', fr: 'Pompes & vannes', de: 'Pumpen & Ventile' },
    'nav.quality': { it: 'Analisi qualità acqua', en: 'Water quality analysis', es: 'Análisis de calidad', fr: 'Analyse qualité eau', de: 'Wasserqualitätsanalyse' },
    'nav.chemicals': { it: 'Dosaggio chimici', en: 'Chemical dosing', es: 'Dosificación química', fr: 'Dosage chimique', de: 'Chemikaliendosierung' },
    'nav.energy': { it: 'Energia e consumi', en: 'Energy & consumption', es: 'Energía y consumos', fr: 'Énergie & consommation', de: 'Energie & Verbrauch' },
    'nav.maintenance': { it: 'Manutenzione', en: 'Maintenance', es: 'Mantenimiento', fr: 'Maintenance', de: 'Wartung' },
    'nav.alarms': { it: 'Allarmi', en: 'Alarms', es: 'Alarmas', fr: 'Alarmes', de: 'Alarme' },
    'nav.reports': { it: 'Report', en: 'Reports', es: 'Informes', fr: 'Rapports', de: 'Berichte' },
    'nav.users': { it: 'Utenti e ruoli', en: 'Users & roles', es: 'Usuarios y roles', fr: 'Utilisateurs & rôles', de: 'Benutzer & Rollen' },
    'nav.settings': { it: 'Impostazioni', en: 'Settings', es: 'Configuración', fr: 'Paramètres', de: 'Einstellungen' },

    // ---- Plant states ----
    'state.running': { it: 'In funzione', en: 'Running', es: 'En marcha', fr: 'En fonction', de: 'In Betrieb' },
    'state.paused': { it: 'In pausa', en: 'Paused', es: 'En pausa', fr: 'En pause', de: 'Pausiert' },
    'state.maintenance': { it: 'Manutenzione', en: 'Maintenance', es: 'Mantenimiento', fr: 'Maintenance', de: 'Wartung' },
    'state.alarm': { it: 'Allarme', en: 'Alarm', es: 'Alarma', fr: 'Alarme', de: 'Alarm' },

    // ---- Generic status ----
    'st.on': { it: 'Acceso', en: 'On', es: 'Encendido', fr: 'Marche', de: 'Ein' },
    'st.off': { it: 'Spento', en: 'Off', es: 'Apagado', fr: 'Arrêt', de: 'Aus' },
    'st.ok': { it: 'OK', en: 'OK', es: 'OK', fr: 'OK', de: 'OK' },
    'st.run': { it: 'In marcia', en: 'Running', es: 'En marcha', fr: 'En marche', de: 'Läuft' },
    'st.stopped': { it: 'Fermo', en: 'Stopped', es: 'Parado', fr: 'Arrêté', de: 'Gestoppt' },
    'st.fault': { it: 'Guasto', en: 'Fault', es: 'Avería', fr: 'Défaut', de: 'Störung' },
    'st.idle': { it: 'Inattivo', en: 'Idle', es: 'Inactivo', fr: 'Inactif', de: 'Leerlauf' },
    'st.auto': { it: 'Automatico', en: 'Automatic', es: 'Automático', fr: 'Automatique', de: 'Automatik' },
    'st.manual': { it: 'Manuale', en: 'Manual', es: 'Manual', fr: 'Manuel', de: 'Manuell' },
    'st.open': { it: 'Aperta', en: 'Open', es: 'Abierta', fr: 'Ouverte', de: 'Offen' },
    'st.closed': { it: 'Chiusa', en: 'Closed', es: 'Cerrada', fr: 'Fermée', de: 'Geschlossen' },
    'st.partial': { it: 'Parziale', en: 'Partial', es: 'Parcial', fr: 'Partielle', de: 'Teilweise' },
    'st.online': { it: 'Online', en: 'Online', es: 'En línea', fr: 'En ligne', de: 'Online' },
    'st.offline': { it: 'Offline', en: 'Offline', es: 'Desconectado', fr: 'Hors ligne', de: 'Offline' },
    'st.sim': { it: 'Simulazione', en: 'Simulation', es: 'Simulación', fr: 'Simulation', de: 'Simulation' },
    'st.conform': { it: 'Conforme', en: 'Compliant', es: 'Conforme', fr: 'Conforme', de: 'Konform' },
    'st.attention': { it: 'Attenzione', en: 'Attention', es: 'Atención', fr: 'Attention', de: 'Achtung' },
    'st.nonconform': { it: 'Non conforme', en: 'Non-compliant', es: 'No conforme', fr: 'Non conforme', de: 'Nicht konform' },
    'st.normal': { it: 'Normale', en: 'Normal', es: 'Normal', fr: 'Normal', de: 'Normal' },

    // ---- Severity ----
    'sev.info': { it: 'Info', en: 'Info', es: 'Info', fr: 'Info', de: 'Info' },
    'sev.warning': { it: 'Warning', en: 'Warning', es: 'Aviso', fr: 'Avertissement', de: 'Warnung' },
    'sev.critical': { it: 'Critico', en: 'Critical', es: 'Crítico', fr: 'Critique', de: 'Kritisch' },

    // ---- Alarm states ----
    'al.open': { it: 'Aperto', en: 'Open', es: 'Abierto', fr: 'Ouvert', de: 'Offen' },
    'al.ack': { it: 'Riconosciuto', en: 'Acknowledged', es: 'Reconocido', fr: 'Acquitté', de: 'Quittiert' },
    'al.resolved': { it: 'Risolto', en: 'Resolved', es: 'Resuelto', fr: 'Résolu', de: 'Behoben' },

    // ---- Common actions ----
    'a.start': { it: 'Avvia', en: 'Start', es: 'Iniciar', fr: 'Démarrer', de: 'Starten' },
    'a.stop': { it: 'Arresta', en: 'Stop', es: 'Detener', fr: 'Arrêter', de: 'Stoppen' },
    'a.reset': { it: 'Reset', en: 'Reset', es: 'Reiniciar', fr: 'Réinit.', de: 'Reset' },
    'a.details': { it: 'Dettagli', en: 'Details', es: 'Detalles', fr: 'Détails', de: 'Details' },
    'a.ack': { it: 'Riconosci', en: 'Acknowledge', es: 'Reconocer', fr: 'Acquitter', de: 'Quittieren' },
    'a.resolve': { it: 'Risolvi', en: 'Resolve', es: 'Resolver', fr: 'Résoudre', de: 'Beheben' },
    'a.export_pdf': { it: 'Esporta PDF', en: 'Export PDF', es: 'Exportar PDF', fr: 'Exporter PDF', de: 'PDF exportieren' },
    'a.export_xls': { it: 'Esporta Excel', en: 'Export Excel', es: 'Exportar Excel', fr: 'Exporter Excel', de: 'Excel exportieren' },
    'a.print': { it: 'Stampa', en: 'Print', es: 'Imprimir', fr: 'Imprimer', de: 'Drucken' },
    'a.email': { it: 'Invia email', en: 'Send email', es: 'Enviar email', fr: 'Envoyer email', de: 'E-Mail senden' },
    'a.generate': { it: 'Genera report', en: 'Generate report', es: 'Generar informe', fr: 'Générer rapport', de: 'Bericht erstellen' },
    'a.new_analysis': { it: 'Nuova analisi', en: 'New analysis', es: 'Nuevo análisis', fr: 'Nouvelle analyse', de: 'Neue Analyse' },
    'a.certificate': { it: 'Genera certificato', en: 'Generate certificate', es: 'Generar certificado', fr: 'Générer certificat', de: 'Zertifikat erstellen' },
    'a.new_wo': { it: 'Crea intervento', en: 'Create work order', es: 'Crear orden', fr: 'Créer intervention', de: 'Auftrag erstellen' },
    'a.complete': { it: 'Segna completato', en: 'Mark complete', es: 'Marcar completado', fr: 'Marquer terminé', de: 'Als erledigt markieren' },
    'a.set_dose': { it: 'Imposta dosaggio', en: 'Set dosing', es: 'Ajustar dosis', fr: 'Régler dosage', de: 'Dosierung einstellen' },
    'a.save': { it: 'Salva', en: 'Save', es: 'Guardar', fr: 'Enregistrer', de: 'Speichern' },
    'a.apply': { it: 'Applica', en: 'Apply', es: 'Aplicar', fr: 'Appliquer', de: 'Anwenden' },
    'a.viewall': { it: 'Vedi tutti', en: 'View all', es: 'Ver todo', fr: 'Voir tout', de: 'Alle anzeigen' },
    'a.backup': { it: 'Backup dati', en: 'Data backup', es: 'Copia de datos', fr: 'Sauvegarde', de: 'Datensicherung' },

    // ---- Simulation ----
    'sim.title': { it: 'Simulazione impianto', en: 'Plant simulation', es: 'Simulación de planta', fr: 'Simulation', de: 'Anlagensimulation' },
    'sim.start': { it: 'Avvia simulazione', en: 'Start simulation', es: 'Iniciar simulación', fr: 'Lancer simulation', de: 'Simulation starten' },
    'sim.pause': { it: 'Pausa simulazione', en: 'Pause simulation', es: 'Pausar simulación', fr: 'Mettre en pause', de: 'Simulation pausieren' },
    'sim.reset': { it: 'Reset simulazione', en: 'Reset simulation', es: 'Reiniciar simulación', fr: 'Réinitialiser', de: 'Simulation zurücksetzen' },
    'sim.testalarm': { it: 'Genera allarme test', en: 'Generate test alarm', es: 'Generar alarma de prueba', fr: 'Générer alarme test', de: 'Testalarm erzeugen' },
    'sim.restore': { it: 'Ripristina parametri', en: 'Restore parameters', es: 'Restaurar parámetros', fr: 'Restaurer paramètres', de: 'Parameter zurücksetzen' },
    'sim.on': { it: 'Live ON', en: 'Live ON', es: 'Live ON', fr: 'Live ON', de: 'Live AN' },
    'sim.off': { it: 'Live OFF', en: 'Live OFF', es: 'Live OFF', fr: 'Live OFF', de: 'Live AUS' },

    // ---- Common words ----
    'c.status': { it: 'Stato', en: 'Status', es: 'Estado', fr: 'État', de: 'Status' },
    'c.mode': { it: 'Modalità', en: 'Mode', es: 'Modo', fr: 'Mode', de: 'Modus' },
    'c.value': { it: 'Valore', en: 'Value', es: 'Valor', fr: 'Valeur', de: 'Wert' },
    'c.unit': { it: 'Unità', en: 'Unit', es: 'Unidad', fr: 'Unité', de: 'Einheit' },
    'c.sensor': { it: 'Sensore', en: 'Sensor', es: 'Sensor', fr: 'Capteur', de: 'Sensor' },
    'c.position': { it: 'Posizione', en: 'Position', es: 'Posición', fr: 'Position', de: 'Position' },
    'c.min': { it: 'Soglia min', en: 'Min threshold', es: 'Umbral mín', fr: 'Seuil min', de: 'Min-Schwelle' },
    'c.max': { it: 'Soglia max', en: 'Max threshold', es: 'Umbral máx', fr: 'Seuil max', de: 'Max-Schwelle' },
    'c.updated': { it: 'Ultimo aggiornamento', en: 'Last update', es: 'Última actualización', fr: 'Dernière mise à jour', de: 'Letzte Aktualisierung' },
    'c.current': { it: 'Corrente', en: 'Current', es: 'Actual', fr: 'Actuel', de: 'Aktuell' },
    'c.inlet': { it: 'Ingresso', en: 'Inlet', es: 'Entrada', fr: 'Entrée', de: 'Zulauf' },
    'c.outlet': { it: 'Uscita', en: 'Outlet', es: 'Salida', fr: 'Sortie', de: 'Ablauf' },
    'c.limit': { it: 'Limite autorizzato', en: 'Authorized limit', es: 'Límite autorizado', fr: 'Limite autorisée', de: 'Genehmigter Grenzwert' },
    'c.param': { it: 'Parametro', en: 'Parameter', es: 'Parámetro', fr: 'Paramètre', de: 'Parameter' },
    'c.trend': { it: 'Trend', en: 'Trend', es: 'Tendencia', fr: 'Tendance', de: 'Trend' },
    'c.efficiency': { it: 'Efficienza', en: 'Efficiency', es: 'Eficiencia', fr: 'Efficacité', de: 'Effizienz' },
    'c.flow': { it: 'Portata', en: 'Flow rate', es: 'Caudal', fr: 'Débit', de: 'Durchfluss' },
    'c.pressure': { it: 'Pressione', en: 'Pressure', es: 'Presión', fr: 'Pression', de: 'Druck' },
    'c.level': { it: 'Livello', en: 'Level', es: 'Nivel', fr: 'Niveau', de: 'Füllstand' },
    'c.volume': { it: 'Volume', en: 'Volume', es: 'Volumen', fr: 'Volume', de: 'Volumen' },
    'c.capacity': { it: 'Capacità max', en: 'Max capacity', es: 'Capacidad máx', fr: 'Capacité max', de: 'Max. Kapazität' },
    'c.runhours': { it: 'Ore funzionamento', en: 'Running hours', es: 'Horas de marcha', fr: 'Heures de marche', de: 'Betriebsstunden' },
    'c.current_a': { it: 'Corrente assorbita', en: 'Current draw', es: 'Corriente', fr: 'Courant', de: 'Stromaufnahme' },
    'c.laststart': { it: 'Ultimo avvio', en: 'Last start', es: 'Último arranque', fr: 'Dernier démarrage', de: 'Letzter Start' },
    'c.nextmaint': { it: 'Prossima manutenzione', en: 'Next maintenance', es: 'Próximo mant.', fr: 'Maintenance prévue', de: 'Nächste Wartung' },
    'c.lastmaint': { it: 'Ultima manutenzione', en: 'Last maintenance', es: 'Último mant.', fr: 'Dernière maintenance', de: 'Letzte Wartung' },
    'c.component': { it: 'Componente', en: 'Component', es: 'Componente', fr: 'Composant', de: 'Komponente' },
    'c.area': { it: 'Area impianto', en: 'Plant area', es: 'Área de planta', fr: 'Zone', de: 'Anlagenbereich' },
    'c.desc': { it: 'Descrizione', en: 'Description', es: 'Descripción', fr: 'Description', de: 'Beschreibung' },
    'c.severity': { it: 'Gravità', en: 'Severity', es: 'Gravedad', fr: 'Gravité', de: 'Schweregrad' },
    'c.datetime': { it: 'Data e ora', en: 'Date & time', es: 'Fecha y hora', fr: 'Date & heure', de: 'Datum & Zeit' },
    'c.operator': { it: 'Operatore', en: 'Operator', es: 'Operador', fr: 'Opérateur', de: 'Bediener' },
    'c.action': { it: 'Azione consigliata', en: 'Recommended action', es: 'Acción recomendada', fr: 'Action conseillée', de: 'Empfohlene Aktion' },
    'c.code': { it: 'Codice', en: 'Code', es: 'Código', fr: 'Code', de: 'Code' },
    'c.priority': { it: 'Priorità', en: 'Priority', es: 'Prioridad', fr: 'Priorité', de: 'Priorität' },
    'c.tech': { it: 'Tecnico', en: 'Technician', es: 'Técnico', fr: 'Technicien', de: 'Techniker' },
    'c.dept': { it: 'Reparto', en: 'Department', es: 'Departamento', fr: 'Service', de: 'Abteilung' },
    'c.search': { it: 'Cerca…', en: 'Search…', es: 'Buscar…', fr: 'Rechercher…', de: 'Suchen…' },
    'c.all': { it: 'Tutti', en: 'All', es: 'Todos', fr: 'Tous', de: 'Alle' },
    'c.today': { it: 'Oggi', en: 'Today', es: 'Hoy', fr: "Aujourd'hui", de: 'Heute' },
    'c.high': { it: 'Alta', en: 'High', es: 'Alta', fr: 'Haute', de: 'Hoch' },
    'c.medium': { it: 'Media', en: 'Medium', es: 'Media', fr: 'Moyenne', de: 'Mittel' },
    'c.low': { it: 'Bassa', en: 'Low', es: 'Baja', fr: 'Basse', de: 'Niedrig' },
    'c.dosing': { it: 'Dosaggio', en: 'Dosing', es: 'Dosis', fr: 'Dosage', de: 'Dosierung' },
    'c.stock': { it: 'Scorta', en: 'Stock', es: 'Existencias', fr: 'Stock', de: 'Bestand' },
    'c.supplier': { it: 'Fornitore', en: 'Supplier', es: 'Proveedor', fr: 'Fournisseur', de: 'Lieferant' },
    'c.range': { it: 'Intervallo date', en: 'Date range', es: 'Rango de fechas', fr: 'Période', de: 'Zeitraum' },
    'c.permissions': { it: 'Permessi', en: 'Permissions', es: 'Permisos', fr: 'Autorisations', de: 'Berechtigungen' },
    'c.role': { it: 'Ruolo', en: 'Role', es: 'Rol', fr: 'Rôle', de: 'Rolle' },
    'c.user': { it: 'Utente', en: 'User', es: 'Usuario', fr: 'Utilisateur', de: 'Benutzer' },
    'c.compliance': { it: 'Conformità', en: 'Compliance', es: 'Conformidad', fr: 'Conformité', de: 'Konformität' },
    'c.lastload': { it: 'Ultimo carico', en: 'Last refill', es: 'Última carga', fr: 'Dernier remplissage', de: 'Letzte Befüllung' },
    'c.nextorder': { it: 'Prossimo riordino', en: 'Next reorder', es: 'Próximo pedido', fr: 'Prochaine commande', de: 'Nächste Bestellung' },
    'c.qty': { it: 'Quantità', en: 'Quantity', es: 'Cantidad', fr: 'Quantité', de: 'Menge' },
    'c.consumption': { it: 'Consumo', en: 'Consumption', es: 'Consumo', fr: 'Consommation', de: 'Verbrauch' },
    'c.daily': { it: 'Giornaliero', en: 'Daily', es: 'Diario', fr: 'Journalier', de: 'Täglich' },
    'c.realtime': { it: 'Impianto in tempo reale', en: 'Plant in real time', es: 'Planta en tiempo real', fr: 'Station en temps réel', de: 'Anlage in Echtzeit' },
    'c.phase': { it: 'Fase', en: 'Stage', es: 'Etapa', fr: 'Étape', de: 'Stufe' },
    'c.kpi': { it: 'Indicatori chiave', en: 'Key indicators', es: 'Indicadores clave', fr: 'Indicateurs clés', de: 'Kennzahlen' },
    'c.deltatoday': { it: 'vs ieri', en: 'vs yesterday', es: 'vs ayer', fr: 'vs hier', de: 'ggü. gestern' },
    'c.assigned': { it: 'Assegnato a', en: 'Assigned to', es: 'Asignado a', fr: 'Assigné à', de: 'Zugewiesen an' },

    // ---- Parameter names ----
    'p.ph': { it: 'pH', en: 'pH', es: 'pH', fr: 'pH', de: 'pH' },
    'p.turbidity': { it: 'Torbidità', en: 'Turbidity', es: 'Turbidez', fr: 'Turbidité', de: 'Trübung' },
    'p.conductivity': { it: 'Conducibilità', en: 'Conductivity', es: 'Conductividad', fr: 'Conductivité', de: 'Leitfähigkeit' },
    'p.temp': { it: 'Temperatura', en: 'Temperature', es: 'Temperatura', fr: 'Température', de: 'Temperatur' },
    'p.cod': { it: 'COD', en: 'COD', es: 'DQO', fr: 'DCO', de: 'CSB' },
    'p.bod': { it: 'BOD5', en: 'BOD5', es: 'DBO5', fr: 'DBO5', de: 'BSB5' },
    'p.tss': { it: 'Solidi sospesi (TSS)', en: 'Suspended solids (TSS)', es: 'Sólidos en suspensión', fr: 'MES', de: 'Schwebstoffe (TSS)' },
    'p.chlorine': { it: 'Cloro residuo', en: 'Residual chlorine', es: 'Cloro residual', fr: 'Chlore résiduel', de: 'Restchlor' },
    'p.do': { it: 'Ossigeno disciolto', en: 'Dissolved oxygen', es: 'Oxígeno disuelto', fr: 'Oxygène dissous', de: 'Gelöster Sauerstoff' },
    'p.nh4': { it: 'Azoto ammoniacale', en: 'Ammonia nitrogen', es: 'Nitrógeno amoniacal', fr: 'Azote ammoniacal', de: 'Ammoniumstickstoff' },
    'p.ntot': { it: 'Azoto totale', en: 'Total nitrogen', es: 'Nitrógeno total', fr: 'Azote total', de: 'Gesamtstickstoff' },
    'p.ptot': { it: 'Fosforo totale', en: 'Total phosphorus', es: 'Fósforo total', fr: 'Phosphore total', de: 'Gesamtphosphor' },
    'p.oils': { it: 'Oli e grassi', en: 'Oils & grease', es: 'Aceites y grasas', fr: 'Huiles & graisses', de: 'Öle & Fette' },
    'p.hardness': { it: 'Durezza', en: 'Hardness', es: 'Dureza', fr: 'Dureté', de: 'Härte' },
    'p.nitrates': { it: 'Nitrati', en: 'Nitrates', es: 'Nitratos', fr: 'Nitrates', de: 'Nitrate' },
    'p.iron': { it: 'Ferro', en: 'Iron', es: 'Hierro', fr: 'Fer', de: 'Eisen' },
    'p.manganese': { it: 'Manganese', en: 'Manganese', es: 'Manganeso', fr: 'Manganèse', de: 'Mangan' },
    'p.bacteria': { it: 'Batteriologia', en: 'Bacteriology', es: 'Bacteriología', fr: 'Bactériologie', de: 'Bakteriologie' },

    // ---- Dashboard KPI labels ----
    'k.plantstate': { it: 'Stato generale impianto', en: 'Overall plant state', es: 'Estado general', fr: 'État général', de: 'Anlagenzustand' },
    'k.flowprimary': { it: 'Portata acque primarie', en: 'Primary water flow', es: 'Caudal agua primaria', fr: 'Débit eaux primaires', de: 'Primärwasser-Durchfluss' },
    'k.flowwaste': { it: 'Portata refluo ingresso', en: 'Wastewater inflow', es: 'Caudal de entrada', fr: 'Débit eaux usées', de: 'Abwasserzulauf' },
    'k.watertoday': { it: 'Acqua trattata oggi', en: 'Water treated today', es: 'Agua tratada hoy', fr: 'Eau traitée aujourd’hui', de: 'Heute aufbereitet' },
    'k.wastetoday': { it: 'Refluo trattato oggi', en: 'Wastewater treated today', es: 'Aguas tratadas hoy', fr: 'Eaux usées traitées', de: 'Heute behandelt' },
    'k.efficiency': { it: 'Efficienza trattamento', en: 'Treatment efficiency', es: 'Eficiencia', fr: 'Efficacité', de: 'Reinigungsleistung' },
    'k.energy': { it: 'Energia consumata oggi', en: 'Energy used today', es: 'Energía consumida hoy', fr: 'Énergie consommée', de: 'Energie heute' },
    'k.reagents': { it: 'Consumo reagenti', en: 'Reagent consumption', es: 'Consumo de reactivos', fr: 'Consommation réactifs', de: 'Reagenzienverbrauch' },
    'k.activealarms': { it: 'Allarmi attivi', en: 'Active alarms', es: 'Alarmas activas', fr: 'Alarmes actives', de: 'Aktive Alarme' },
    'k.outofrange': { it: 'Parametri fuori soglia', en: 'Out-of-range params', es: 'Parámetros fuera de rango', fr: 'Paramètres hors seuil', de: 'Parameter außerhalb' },
    'k.outquality': { it: 'Qualità acqua in uscita', en: 'Outlet water quality', es: 'Calidad del agua', fr: 'Qualité en sortie', de: 'Ablaufqualität' },
    'k.sludge': { it: 'Stato linea fanghi', en: 'Sludge line status', es: 'Estado línea fangos', fr: 'État filière boues', de: 'Schlammlinie' },
    'k.pumps': { it: 'Stato pompe principali', en: 'Main pumps status', es: 'Bombas principales', fr: 'Pompes principales', de: 'Hauptpumpen' },
    'k.disinfection': { it: 'Stato disinfezione', en: 'Disinfection status', es: 'Estado desinfección', fr: 'État désinfection', de: 'Desinfektion' },

    // ---- Chart titles ----
    'ch.hourlyflow': { it: 'Portata oraria', en: 'Hourly flow', es: 'Caudal por hora', fr: 'Débit horaire', de: 'Stündlicher Durchfluss' },
    'ch.quality': { it: 'Qualità acqua ingresso/uscita', en: 'Water quality in/out', es: 'Calidad agua entrada/salida', fr: 'Qualité entrée/sortie', de: 'Wasserqualität Ein/Aus' },
    'ch.energy': { it: 'Consumo energetico', en: 'Energy consumption', es: 'Consumo energético', fr: 'Consommation énergie', de: 'Energieverbrauch' },
    'ch.reagents': { it: 'Consumo reagenti', en: 'Reagent consumption', es: 'Consumo reactivos', fr: 'Consommation réactifs', de: 'Reagenzienverbrauch' },
    'ch.turbidity': { it: 'Trend torbidità', en: 'Turbidity trend', es: 'Tendencia turbidez', fr: 'Tendance turbidité', de: 'Trübungsverlauf' },
    'ch.codbod': { it: 'Trend COD / BOD', en: 'COD / BOD trend', es: 'Tendencia DQO/DBO', fr: 'Tendance DCO/DBO', de: 'CSB/BSB-Verlauf' },
    'ch.ph': { it: 'Trend pH', en: 'pH trend', es: 'Tendencia pH', fr: 'Tendance pH', de: 'pH-Verlauf' },
    'ch.sludgeprod': { it: 'Produzione fanghi', en: 'Sludge production', es: 'Producción de fangos', fr: 'Production de boues', de: 'Schlammproduktion' },

    // ---- Toasts ----
    'toast.pumpstart': { it: 'Pompa avviata', en: 'Pump started', es: 'Bomba iniciada', fr: 'Pompe démarrée', de: 'Pumpe gestartet' },
    'toast.pumpstop': { it: 'Pompa arrestata', en: 'Pump stopped', es: 'Bomba detenida', fr: 'Pompe arrêtée', de: 'Pumpe gestoppt' },
    'toast.alarmack': { it: 'Allarme riconosciuto', en: 'Alarm acknowledged', es: 'Alarma reconocida', fr: 'Alarme acquittée', de: 'Alarm quittiert' },
    'toast.alarmresolved': { it: 'Allarme risolto', en: 'Alarm resolved', es: 'Alarma resuelta', fr: 'Alarme résolue', de: 'Alarm behoben' },
    'toast.cyclecomplete': { it: 'Ciclo di trattamento completato', en: 'Treatment cycle completed', es: 'Ciclo de tratamiento completado', fr: 'Cycle de traitement terminé', de: 'Behandlungszyklus abgeschlossen' },
    'toast.reportgen': { it: 'Report generato con successo', en: 'Report generated successfully', es: 'Informe generado', fr: 'Rapport généré', de: 'Bericht erstellt' },
    'toast.threshold': { it: 'Parametro oltre soglia', en: 'Parameter over threshold', es: 'Parámetro fuera de umbral', fr: 'Paramètre hors seuil', de: 'Parameter über Schwelle' },
    'toast.langchanged': { it: 'Lingua aggiornata', en: 'Language updated', es: 'Idioma actualizado', fr: 'Langue mise à jour', de: 'Sprache aktualisiert' },
    'toast.simstart': { it: 'Simulazione avviata', en: 'Simulation started', es: 'Simulación iniciada', fr: 'Simulation lancée', de: 'Simulation gestartet' },
    'toast.simpause': { it: 'Simulazione in pausa', en: 'Simulation paused', es: 'Simulación pausada', fr: 'Simulation en pause', de: 'Simulation pausiert' },
    'toast.simreset': { it: 'Simulazione resettata', en: 'Simulation reset', es: 'Simulación reiniciada', fr: 'Simulation réinitialisée', de: 'Simulation zurückgesetzt' },
    'toast.testalarm': { it: 'Allarme di test generato', en: 'Test alarm generated', es: 'Alarma de prueba generada', fr: 'Alarme test générée', de: 'Testalarm erzeugt' },
    'toast.restored': { it: 'Parametri ripristinati', en: 'Parameters restored', es: 'Parámetros restaurados', fr: 'Paramètres restaurés', de: 'Parameter zurückgesetzt' },
    'toast.valvecmd': { it: 'Comando valvola inviato', en: 'Valve command sent', es: 'Comando de válvula enviado', fr: 'Commande de vanne envoyée', de: 'Ventilbefehl gesendet' },
    'toast.dosset': { it: 'Dosaggio aggiornato', en: 'Dosing updated', es: 'Dosis actualizada', fr: 'Dosage mis à jour', de: 'Dosierung aktualisiert' },
    'toast.wocreated': { it: 'Intervento creato', en: 'Work order created', es: 'Orden creada', fr: 'Intervention créée', de: 'Auftrag erstellt' },
    'toast.wocomplete': { it: 'Intervento completato', en: 'Work order completed', es: 'Orden completada', fr: 'Intervention terminée', de: 'Auftrag abgeschlossen' },
    'toast.saved': { it: 'Impostazioni salvate', en: 'Settings saved', es: 'Configuración guardada', fr: 'Paramètres enregistrés', de: 'Einstellungen gespeichert' },

    // ---- Misc section bits ----
    'm.history': { it: 'Storico analisi', en: 'Analysis history', es: 'Historial de análisis', fr: 'Historique', de: 'Analyseverlauf' },
    'm.scheduled': { it: 'Campionamenti programmati', en: 'Scheduled sampling', es: 'Muestreos programados', fr: 'Prélèvements programmés', de: 'Geplante Probenahmen' },
    'm.labmanager': { it: 'Responsabile laboratorio', en: 'Lab manager', es: 'Responsable de laboratorio', fr: 'Responsable labo', de: 'Laborleiter' },
    'm.calendar': { it: 'Calendario manutenzioni', en: 'Maintenance calendar', es: 'Calendario de mant.', fr: 'Calendrier maintenance', de: 'Wartungskalender' },
    'm.workorders': { it: 'Ordini di lavoro', en: 'Work orders', es: 'Órdenes de trabajo', fr: 'Ordres de travail', de: 'Arbeitsaufträge' },
    'm.assetlist': { it: 'Lista asset', en: 'Asset list', es: 'Lista de activos', fr: 'Liste équipements', de: 'Anlagenliste' },
    'm.pumps': { it: 'Pompe', en: 'Pumps', es: 'Bombas', fr: 'Pompes', de: 'Pumpen' },
    'm.valves': { it: 'Valvole', en: 'Valves', es: 'Válvulas', fr: 'Vannes', de: 'Ventile' },
    'm.reagent': { it: 'Reagente', en: 'Reagent', es: 'Reactivo', fr: 'Réactif', de: 'Reagenz' },
    'm.tank': { it: 'Serbatoio', en: 'Tank', es: 'Depósito', fr: 'Réservoir', de: 'Tank' },
    'm.opening': { it: 'Apertura', en: 'Opening', es: 'Apertura', fr: 'Ouverture', de: 'Öffnung' },
    'm.noalarms': { it: 'Nessun allarme attivo', en: 'No active alarms', es: 'Sin alarmas activas', fr: 'Aucune alarme active', de: 'Keine aktiven Alarme' },
    'm.empty': { it: 'Nessun risultato', en: 'No results', es: 'Sin resultados', fr: 'Aucun résultat', de: 'Keine Ergebnisse' },
    'm.thresholds': { it: 'Soglie allarme', en: 'Alarm thresholds', es: 'Umbrales de alarma', fr: 'Seuils d’alarme', de: 'Alarmschwellen' },
    'm.dischargelimits': { it: 'Limiti di scarico', en: 'Discharge limits', es: 'Límites de vertido', fr: 'Limites de rejet', de: 'Einleitgrenzwerte' },
    'm.consumed_today': { it: 'Consumato oggi', en: 'Consumed today', es: 'Consumido hoy', fr: 'Consommé aujourd’hui', de: 'Heute verbraucht' },
    'm.dryness': { it: 'Secco', en: 'Dryness', es: 'Sequedad', fr: 'Siccité', de: 'Trockenheit' },
    'm.produced_today': { it: 'Prodotti oggi', en: 'Produced today', es: 'Producido hoy', fr: 'Produit aujourd’hui', de: 'Heute produziert' },
    'm.nextpickup': { it: 'Prossimo ritiro', en: 'Next pickup', es: 'Próxima retirada', fr: 'Prochain enlèvement', de: 'Nächste Abholung' },
    'm.source': { it: 'Fonte acqua', en: 'Water source', es: 'Fuente de agua', fr: 'Source d’eau', de: 'Wasserquelle' },
    'm.specific_energy': { it: 'Consumo specifico', en: 'Specific consumption', es: 'Consumo específico', fr: 'Consommation spécifique', de: 'Spez. Verbrauch' },
    'm.cost_today': { it: 'Costo stimato oggi', en: 'Estimated cost today', es: 'Coste estimado hoy', fr: 'Coût estimé aujourd’hui', de: 'Geschätzte Kosten heute' },
    'm.co2': { it: 'Emissioni CO₂ stimate', en: 'Estimated CO₂ emissions', es: 'Emisiones CO₂', fr: 'Émissions CO₂', de: 'CO₂-Emissionen' },
    'm.peak': { it: 'Picco di potenza', en: 'Power peak', es: 'Pico de potencia', fr: 'Pic de puissance', de: 'Leistungsspitze' },
    'm.byDept': { it: 'Consumo per reparto', en: 'Consumption by area', es: 'Consumo por área', fr: 'Consommation par zone', de: 'Verbrauch nach Bereich' },
    'm.connection': { it: 'Stato connessione', en: 'Connection status', es: 'Estado de conexión', fr: 'État connexion', de: 'Verbindungsstatus' },
  };

  function makeT(lang) {
    return function t(key, fallback) {
      const e = D[key];
      if (!e) return fallback !== undefined ? fallback : key;
      return e[lang] || e.it || key;
    };
  }

  window.I18N = { LANGS, D, makeT };
})();
