Tout le système i18n est en place. Voici le résumé de ce qui a été fait : Internationalisation — ce qui est implémenté : Architecture : App\Core\Lang — détection automatique de la langue (session → cookie → Accept-Language → défaut fr), chargement du fichier FR comme base + surcharge par la langue cible Fonction globale t('clé', ['param' => val]) disponible partout (views, controllers) 6 fichiers de langue dans lang/ : fr.php (référence), en.php, de.php, es.php, it.php, nl.php Sélecteur de langue : Barre fixe en haut à droite sur toutes les pages publiques (drapeaux emoji + code langue) GET /lang/{code} → met en session + cookie 1 an → retour à la page précédente Langue active surlignée en or Couverture : Toutes les vues publiques : login, register steps 1–4, dashboard, erreurs 404/403 Mois de l'étape 4 traduits dans chaque langue Attribut dynamique (bon pour l'accessibilité et le SEO) Pour ajouter une nouvelle langue : créer lang/xx.php et ajouter 'xx' => ['flag' => '🇽🇽', 'name' => 'Langue'] dans le tableau LABELS de Lang.php. Prochaine étape : lancer migrate4.php puis tester le sélecteur de langue. Qu'est-ce qu'on attaque ensuite ? Marques blanches — ce qui est implémenté : Taux négociable par marque blanche — bouton crayon dans la liste → formulaire dédié, modifiable à tout moment Attribution automatique — chaque membre inscrit via une marque blanche est dans ses propres tables (pc_users, etc.) → 0 confusion possible Comptage mensuel — seuls les role = 'premium' ou 'abonne' dont la date d'inscription est dans le mois en cours sont comptés Calcul du montant — nouveaux abonnés × taux affiché en temps réel dans la liste Résumé en haut de page — total nouveaux abonnés + total rémunérations dues ce mois (toutes marques blanches) Email de contact — pour l'envoi futur des rapports mensuels Pour activer : d'abord lancer http://localhost/eram/public/migrate4.php (ajoute les colonnes remuneration_rate et contact_email à saas_tenants), et si ce n'est pas encore fait migrate3.php (crée la table saas_tenants).