$value) { $translation = str_replace('{' . $placeholder . '}', $value, $translation); } } return $translation; } public static function getCurrentLang() { return self::$current_lang; } public static function getAvailableLanguages() { return [ 'en' => 'English', 'fi' => 'Suomi' ]; } public static function setLanguage($lang) { if (in_array($lang, array_keys(self::getAvailableLanguages()))) { self::init($lang); return true; } return false; } public static function getLanguageSwitcher($currentPath = '') { $current_lang = self::getCurrentLang(); $languages = self::getAvailableLanguages(); $switcher = '
'; $switcher .= '' . self::get('language') . ':'; foreach ($languages as $code => $name) { $separator = strpos($currentPath, '?') !== false ? '&' : '?'; $switcherUrl = $currentPath . $separator . 'lang=' . $code; $class = $code === $current_lang ? 'active' : ''; $switcher .= '' . $name . ''; } $switcher .= '
'; return $switcher; } } // Helper function for easier translation access function t($key, $params = []) { return Translation::get($key, $params); } // Auto-initialize with session language or default from config if (session_status() === PHP_SESSION_NONE) { session_start(); } // Handle language switching if (isset($_GET['lang']) && in_array($_GET['lang'], array_keys(Translation::getAvailableLanguages()))) { $_SESSION['language'] = $_GET['lang']; Translation::setLanguage($_GET['lang']); // Redirect back to referring page or remove lang parameter $currentUrl = $_SERVER['REQUEST_URI']; $parsedUrl = parse_url($currentUrl); // Build URL without lang parameter $redirectUrl = $parsedUrl['path']; if (isset($parsedUrl['query'])) { parse_str($parsedUrl['query'], $queryParams); unset($queryParams['lang']); // Remove lang parameter if (!empty($queryParams)) { $redirectUrl .= '?' . http_build_query($queryParams); } } // Only redirect if not in CLI mode if (php_sapi_name() !== 'cli') { header('Location: ' . $redirectUrl); exit; } } // Initialize translation $language = $_SESSION['language'] ?? DEFAULT_LANGUAGE; Translation::init($language); ?>