<?php
class LanguageManager {
    private static $instance = null;
    private $current_language = 'zh-TW';
    private $translations = [];
    
    private function __construct() {
        $this->loadLanguage();
    }
    
    public static function getInstance() {
        if (self::$instance === null) {
            self::$instance = new self();
        }
        return self::$instance;
    }
    
    private function loadLanguage() {
        // Get language from session or default to zh-TW
        if (session_status() == PHP_SESSION_NONE) {
            session_start();
        }
        
        $this->current_language = $_SESSION['language'] ?? 'zh-TW';
        
        // Load language file
        $language_file = __DIR__ . "/languages/{$this->current_language}.php";
        if (file_exists($language_file)) {
            $this->translations = include $language_file;
        } else {
            // Fallback to default language
            $default_file = __DIR__ . "/languages/zh-TW.php";
            $this->translations = include $default_file;
        }
    }
    
    public function setLanguage($language) {
        if (session_status() == PHP_SESSION_NONE) {
            session_start();
        }
        
        $_SESSION['language'] = $language;
        $this->current_language = $language;
        $this->loadLanguage();
    }
    
    public function getCurrentLanguage() {
        return $this->current_language;
    }
    
    public function t($key, $default = null) {
        return $this->translations[$key] ?? $default ?? $key;
    }
    
    public function getAvailableLanguages() {
        return [
            'zh-TW' => '繁體中文',
            'en-US' => 'English'
        ];
    }
    
    public function getLanguageDirection() {
        return $this->current_language === 'ar' ? 'rtl' : 'ltr';
    }
    
    public function getLanguageCode() {
        return $this->current_language;
    }
}

// Global function for easy access
function t($key, $default = null) {
    return LanguageManager::getInstance()->t($key, $default);
}

function getCurrentLanguage() {
    return LanguageManager::getInstance()->getCurrentLanguage();
}

function setLanguage($language) {
    return LanguageManager::getInstance()->setLanguage($language);
}
?>
