<?php
header('Content-Type: application/json');
header('Access-Control-Allow-Credentials: true');
header('Access-Control-Allow-Origin: *');

require_once __DIR__ . '/../includes/i18n.php';

$method = $_SERVER['REQUEST_METHOD'];

try {
    $i18n = I18n::getInstance();
    
    switch ($method) {
        case 'GET':
            $action = $_GET['action'] ?? '';
            
            switch ($action) {
                case 'languages':
                    echo json_encode([
                        'success' => true,
                        'data' => $i18n->getAvailableLanguages()
                    ]);
                    break;
                    
                case 'current':
                    echo json_encode([
                        'success' => true,
                        'data' => [
                            'language' => $i18n->getCurrentLanguage(),
                            'info' => $i18n->getLanguageInfo()
                        ]
                    ]);
                    break;
                    
                case 'translations':
                    $keys = $_GET['keys'] ?? '';
                    if ($keys) {
                        $keyArray = explode(',', $keys);
                        $translations = [];
                        foreach ($keyArray as $key) {
                            $translations[trim($key)] = $i18n->t(trim($key));
                        }
                        echo json_encode([
                            'success' => true,
                            'data' => $translations
                        ]);
                    } else {
                        echo json_encode([
                            'success' => false,
                            'message' => 'Keys parameter is required'
                        ]);
                    }
                    break;
                    
                default:
                    echo json_encode([
                        'success' => false,
                        'message' => 'Invalid action'
                    ]);
                    break;
            }
            break;
            
        case 'POST':
            $input = json_decode(file_get_contents('php://input'), true);
            $action = $input['action'] ?? '';
            
            switch ($action) {
                case 'set_language':
                    $language = $input['language'] ?? '';
                    
                    if (empty($language)) {
                        echo json_encode([
                            'success' => false,
                            'message' => 'Language parameter is required'
                        ]);
                        break;
                    }
                    
                    if ($i18n->setLanguage($language)) {
                        echo json_encode([
                            'success' => true,
                            'message' => 'Language changed successfully',
                            'data' => [
                                'language' => $language,
                                'info' => $i18n->getLanguageInfo()
                            ]
                        ]);
                    } else {
                        echo json_encode([
                            'success' => false,
                            'message' => 'Invalid language'
                        ]);
                    }
                    break;
                    
                case 'translate':
                    $key = $input['key'] ?? '';
                    $params = $input['params'] ?? [];
                    
                    if (empty($key)) {
                        echo json_encode([
                            'success' => false,
                            'message' => 'Key parameter is required'
                        ]);
                        break;
                    }
                    
                    echo json_encode([
                        'success' => true,
                        'data' => [
                            'key' => $key,
                            'translation' => $i18n->t($key, $params)
                        ]
                    ]);
                    break;
                    
                default:
                    echo json_encode([
                        'success' => false,
                        'message' => 'Invalid action'
                    ]);
                    break;
            }
            break;
            
        default:
            echo json_encode([
                'success' => false,
                'message' => 'Method not allowed'
            ]);
            break;
    }
} catch (Exception $e) {
    echo json_encode([
        'success' => false,
        'message' => 'Error: ' . $e->getMessage()
    ]);
}
?>
