'English', 'fi' => 'Finnish']; private function __construct() { $this->detectLanguage(); $this->loadTranslations(); } public static function getInstance() { if (self::$instance === null) { self::$instance = new self(); } return self::$instance; } private function detectLanguage() { // Check if language is set in session if (isset($_SESSION['language']) && isset($this->supportedLanguages[$_SESSION['language']])) { $this->currentLanguage = $_SESSION['language']; return; } // Check URL parameter if (isset($_GET['lang']) && isset($this->supportedLanguages[$_GET['lang']])) { $this->currentLanguage = $_GET['lang']; $_SESSION['language'] = $this->currentLanguage; return; } // Check browser language preference if (isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])) { $browserLang = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2); if (isset($this->supportedLanguages[$browserLang])) { $this->currentLanguage = $browserLang; $_SESSION['language'] = $this->currentLanguage; return; } } // Check configuration default if (defined('DEFAULT_LANGUAGE') && isset($this->supportedLanguages[DEFAULT_LANGUAGE])) { $this->currentLanguage = DEFAULT_LANGUAGE; return; } // Fall back to default language $this->currentLanguage = $this->defaultLanguage; } private function loadTranslations() { $langFile = __DIR__ . '/../languages/' . $this->currentLanguage . '.php'; if (file_exists($langFile)) { $this->translations = require $langFile; } else { // Fall back to default language if current language file doesn't exist $defaultLangFile = __DIR__ . '/../languages/' . $this->defaultLanguage . '.php'; if (file_exists($defaultLangFile)) { $this->translations = require $defaultLangFile; } } } public function translate($key, $params = []) { if (isset($this->translations[$key])) { $translation = $this->translations[$key]; // Replace parameters in translation foreach ($params as $param => $value) { $translation = str_replace(':' . $param, $value, $translation); } return $translation; } // Return key if translation not found return $key; } public function getCurrentLanguage() { return $this->currentLanguage; } public function getSupportedLanguages() { return $this->supportedLanguages; } public function setLanguage($language) { if (isset($this->supportedLanguages[$language])) { $this->currentLanguage = $language; $_SESSION['language'] = $language; $this->loadTranslations(); return true; } return false; } public function getLanguageSwitcher($currentPath = '') { $switcher = '