import chalk from "chalk"
import { t, CONSOLE_LOCALE } from "./i18n"

/**
 * Fonction utilitaire pour les logs console localisés avec couleurs
 * @param service - Le service (discordjs, discord_player, mongoose, twitch)
 * @param key - La clé de traduction sans le préfixe "console.{service}."
 * @param params - Les paramètres à remplacer dans le message
 */
export function logConsole(service: 'discordjs' | 'discord_player' | 'mongoose' | 'twitch' | 'freebox', key: string, params?: Record<string, string>) {
	const locale = CONSOLE_LOCALE // Utilise la locale configurée pour les logs console
	const fullKey = `console.${service}.${key}`
	const message = t(locale, fullKey, params)
	
	// Couleurs selon le service
	switch (service) {
		case 'discordjs':
			console.log(chalk.blue(message))
			break
		case 'discord_player':
			console.log(chalk.cyan(message))
			break
		case 'mongoose':
			console.log(chalk.green(message))
			break
		case 'twitch':
			console.log(chalk.magenta(message))
			break
		case 'freebox':
			console.log(chalk.yellow(message))
			break
		default:
			console.log(message)
	}
}

/**
 * Fonction pour les logs d'erreur console
 * @param service - Le service
 * @param key - La clé de traduction
 * @param params - Les paramètres
 * @param error - L'erreur à logger après le message
 */
export function logConsoleError(service: 'discordjs' | 'discord_player' | 'mongoose' | 'twitch' | 'freebox', key: string, params?: Record<string, string>, error?: Error) {
	logConsole(service, key, params)
	if (error) console.error(error)
}

/**
 * Log conditionnel en mode développement
 */
export function logConsoleDev(service: 'discordjs' | 'discord_player' | 'mongoose' | 'twitch' | 'freebox', key: string, params?: Record<string, string>) {
	if (process.env.NODE_ENV === "development") logConsole(service, key, params)
}
