false, 'message' => 'Método no permitido']); exit; } // Obtener el idioma de la solicitud $language = $_POST['language'] ?? null; // Validar que se proporcionó un idioma if (empty($language)) { http_response_code(400); // Solicitud incorrecta echo json_encode(['success' => false, 'message' => 'No se proporcionó un idioma']); exit; } // Verificar que el idioma esté disponible $availableLanguages = get_available_languages(); $validLanguage = false; foreach ($availableLanguages as $lang) { if ($lang['code'] === $language) { $validLanguage = true; break; } } if (!$validLanguage) { http_response_code(400); // Solicitud incorrecta echo json_encode(['success' => false, 'message' => 'Idioma no válido']); exit; } // Actualizar el idioma en la sesión $_SESSION['language'] = $language; // Si el usuario está autenticado, actualizar su preferencia de idioma en la base de datos if (isset($_SESSION['user_id'])) { try { $stmt = $pdo->prepare("UPDATE users SET language = ? WHERE id = ?"); $stmt->execute([$language, $_SESSION['user_id']]); } catch (PDOException $e) { // Registrar el error pero no fallar la operación error_log("Error al actualizar el idioma del usuario: " . $e->getMessage()); } } // Limpiar la caché de traducciones si existe if (isset($GLOBALS['_translations_cache'])) { $GLOBALS['_translations_cache'] = []; } // Devolver respuesta exitosa echo json_encode([ 'success' => true, 'message' => 'Idioma actualizado correctamente', 'language' => $language ]); // Registrar el cambio de idioma custom_log("Idioma cambiado a: " . $language, 'language'); // Finalizar el script exit;