<?php

class Language {
    private static string $lang = 'th';
    private static array $translations = [];

    public static function init(): void {
        if (isset($_GET['lang']) && in_array($_GET['lang'], ['th', 'en'])) {
            $_SESSION['lang'] = $_GET['lang'];
        }
        self::$lang = $_SESSION['lang'] ?? 'th';
        self::loadTranslations();
    }

    public static function getLang(): string {
        return self::$lang;
    }

    public static function setLang(string $lang): void {
        if (in_array($lang, ['th', 'en'])) {
            $_SESSION['lang'] = $lang;
            self::$lang = $lang;
            self::loadTranslations();
        }
    }

    private static function loadTranslations(): void {
        self::$translations = [
            'th' => [
                'home' => 'หน้าแรก',
                'all_products' => 'สินค้าทั้งหมด',
                'my_orders' => 'คำสั่งซื้อของฉัน',
                'my_shop' => 'หน้าร้านของฉัน',
                'wishlist' => 'รายการที่ชอบ',
                'cart' => 'ตะกร้าสินค้า',
                'profile' => 'ข้อมูลส่วนตัว',
                'logout' => 'ออกจากระบบ',
                'login' => 'เข้าสู่ระบบ',
                'register' => 'สมัครสมาชิก',
                'order_history' => 'ประวัติคำสั่งซื้อ',
                'order_details' => 'รายละเอียดคำสั่งซื้อ',
                'order_number' => 'หมายเลขคำสั่งซื้อ',
                'total_amount' => 'ยอดรวมสุทธิ',
                'status' => 'สถานะ',
                'items' => 'รายการสินค้า',
                'actions' => 'การจัดการ',
                'review_product' => 'รีวิวสินค้า',
                'reviewed' => 'รีวิวแล้ว',
                'buy_again' => 'สั่งซื้ออีกครั้ง',
                'track_shipping' => 'ติดตามพัสดุ',
                'all' => 'ทั้งหมด',
                'pending_payment' => 'รอชำระเงิน',
                'processing' => 'กำลังเตรียมจัดส่ง',
                'shipping' => 'อยู่ระหว่างจัดส่ง',
                'delivered' => 'จัดส่งสำเร็จ',
                'cancelled' => 'ยกเลิกคำสั่งซื้อ',
                'search_placeholder' => 'ค้นหาด้วยหมายเลขคำสั่งซื้อ หรือ เลขพัสดุ...',
                'search' => 'ค้นหา',
                'total_orders' => 'คำสั่งซื้อทั้งหมด',
                'view_details' => 'ดูรายละเอียด',
                'quantity' => 'จำนวน',
                'price' => 'ราคา',
                'subtotal' => 'ราคารวม',
                'seller_info' => 'ข้อมูลผู้ขาย',
                'shipping_address' => 'ที่อยู่จัดส่ง',
                'tracking_number' => 'เลขพัสดุ',
                'review_progress' => 'ความคืบหน้าการรีวิว',
                'no_orders' => 'ยังไม่มีรายการคำสั่งซื้อ',
                'start_shopping' => 'เริ่มเลือกซื้อสินค้า',
                'language' => 'ภาษา',
                'th_lang' => 'ไทย (TH)',
                'en_lang' => 'English (EN)'
            ],
            'en' => [
                'home' => 'Home',
                'all_products' => 'All Products',
                'my_orders' => 'My Orders',
                'my_shop' => 'My Shop',
                'wishlist' => 'Wishlist',
                'cart' => 'Cart',
                'profile' => 'Profile',
                'logout' => 'Logout',
                'login' => 'Login',
                'register' => 'Register',
                'order_history' => 'Order History',
                'order_details' => 'Order Details',
                'order_number' => 'Order No.',
                'total_amount' => 'Total Amount',
                'status' => 'Status',
                'items' => 'Items',
                'actions' => 'Actions',
                'review_product' => 'Review Product',
                'reviewed' => 'Reviewed',
                'buy_again' => 'Buy Again',
                'track_shipping' => 'Track Package',
                'all' => 'All',
                'pending_payment' => 'Pending Payment',
                'processing' => 'Processing',
                'shipping' => 'Shipping',
                'delivered' => 'Delivered',
                'cancelled' => 'Cancelled',
                'search_placeholder' => 'Search by Order No. or Tracking No....',
                'search' => 'Search',
                'total_orders' => 'Total Orders',
                'view_details' => 'View Details',
                'quantity' => 'Qty',
                'price' => 'Price',
                'subtotal' => 'Subtotal',
                'seller_info' => 'Seller Info',
                'shipping_address' => 'Shipping Address',
                'tracking_number' => 'Tracking Number',
                'review_progress' => 'Review Progress',
                'no_orders' => 'No orders found',
                'start_shopping' => 'Start Shopping',
                'language' => 'Language',
                'th_lang' => 'Thai (TH)',
                'en_lang' => 'English (EN)'
            ]
        ];
    }

    public static function get(string $key, ?string $default = null): string {
        return self::$translations[self::$lang][$key] ?? $default ?? $key;
    }
}
