$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);
?>