IOL
Cape Town woman in court over alleged human trafficking
A 30-year-old woman appeared in the Wynberg Magistrates’ Court on Tuesday after her arrest in an investigation into the alleged trafficking of a 21-year-old woman in Rondebosch.
IOL
German hiker injured in Table Mountain fall as teenager rescued
A 55-year-old German man was seriously injured in a four-metre fall on Table Mountain, while a separate operation rescued a 17-year-old hiker suffering from dehydration and exhaustion.
The Citizen
Wednesday’s weather: Heavy downpours, heatwave, hail and strong winds
Heavy downpours, damaging winds, hail, lightning and a heatwave have been forecast for most parts of KwaZulu-Natal, while damaging interior winds are expected in parts of the Northern and Western Cape. Here is what to expect on Wednesday, according to the South African Weather Service. Weather warnings for 14 October 2026 Impact-based warnings The weather service has issued a yellow level 2 warning for severe thunderstorms accompanied by heavy downpours, damaging winds, hail and lightning in most parts of KwaZulu-Natal, except in the north. This could result in localised flooding and damage to infrastructure and settlements. A yellow level 1 warning has also been issued for damaging interior winds leading to localised problems for high-sided vehicles on prone routes and localised damage to temporary structures in the Karoo Hoogland Local Municipality in the Northern Cape and the Central Karoo District Municipality in the Western Cape. Fire danger warnings Expect extremely high fire danger conditions in the central parts of the Northern Cape, northeastern parts of the Western Cape, northwestern parts of the Eastern Cape and the northern parts of Limpopo. Advisories A heatwave with persistently high temperatures is expected in the northwestern parts of KwaZulu-Natal, until Thursday. Weather outlook for Wednesday & Thursday: 14-15 October 2026. Partly cloudy, warm to hot conditions are expected over the central & eastern parts of the country, with isolated thunderstorms possible. Otherwise, fine with cool conditions along the west coast of the RSA. #saws pic.twitter.com/ohPL8VcUkG— SA Weather Service (@SAWeatherServic) October 12, 2026 Provincial weather forecast Here’s what to expect in your province on 14 October: Gauteng: It will be partly cloudy with isolated showers and thundershowers in the southwest in the afternoon. The region’s expected UVB sunburn index is “high”. Residents should take the necessary precautions against prolonged sun exposure. Mpumalanga: Expect cloudy skies with morning fog and drizzle in places in the eastern Highveld and Escarpment areas at first; otherwise, it will be partly cloudy and warm but hot in places in the Lowveld. Limpopo: It will be cloudy in the southeastern parts in the morning with fog in places along the escarpment. Otherwise, it will be a partly cloudy and warm to hot day. North West: Partly cloudy and warm to hot weather awaits, with isolated showers and thundershowers, but scattered in the extreme west. Free State: Expect partly cloudy, windy and warm to hot conditions with isolated showers and thundershowers, but scattered in the extreme northwest. Northern Cape: It will be fine with high-level clouds in the west where it will be cool in places. Otherwise, it will be partly cloudy and warm to hot with isolated showers and thundershowers in the east, but scattered in the extreme northeast. Windy conditions can also be expected over the southern parts during the afternoon. Western Cape: Fine weather is expected, with high-level clouds in the west. Otherwise, it will be partly cloudy and cool to warm with morning fog in places over the southern and central interior. Windy conditions can also be expected over the Central and Little Karoo during the afternoon where it will be hot in places. The region’s expected UVB sunburn index is “very high”. Residents should take the necessary precautions against prolonged sun exposure. Eastern Cape (western half): It will be cloudy with fog in the south in the morning and again from the evening; otherwise, it will be fine and warm to hot, becoming partly cloudy and windy in the afternoon. Isolated thunderstorms are expected in the extreme eastern interior. Eastern Cape (eastern half): Expect morning fog in places along the coast and adjacent interior; otherwise, it will be partly cloudy and warm to hot with isolated showers and thundershowers. KwaZulu-Natal: There will be morning fog over the extreme western interior; otherwise, it will be partly cloudy and warm to hot with scattered showers and thundershowers in the southwest, but isolated, except in the northeast. The region’s expected UVB sunburn index is “high”. Residents should take the necessary precautions against prolonged sun exposure.
The Citizen
Recipe of the day: Lemongrass and ginger beer
Nthabiseng Nti Ramaboa, better known as Chef Nti, has built her food career around keeping South African food stories alive. Her cooking brings together familiar flavours and ingredients with a contemporary approach, and she has a particular appreciation for home-grown produce and local food producers. Her lemongrass and ginger beer is rooted in memories of Christmas mornings and celebrations in Soweto. It is also a good example of how a few ingredients from the garden can become something that is made to be shared. Ingredients 625g sugar 250g fresh ginger, chopped 150g lemongrass, chopped 4 litres water 2 lemons 10g yeast 1 pineapple, cut into chunks Method Bring 1 litre of water to the boil and add the ginger, lemongrass and sugar. Stir until the sugar has dissolved. Add the remaining water along with the lemon juice and zest and the yeast. Leave the mixture to rest for 10 to 12 hours before straining and refrigerating. Serve chilled with fresh pineapple. Print Recipe of the day: Lemongrass and ginger beer Nthabiseng Nti Ramaboa, better known as Chef Nti, has built her food career around keeping South African food stories alive. Her cooking brings together familiar flavours and ingredients with a contemporary approach, and she has a particular appreciation for home-grown produce and local food producers. Her lemongrass and ginger beer is rooted in memories of Christmas mornings and celebrations in Soweto. It is also a good example of how a few ingredients from the garden can become something that is made to be shared. Author: Thami Kwazi Ingredients 625g sugar 250g fresh ginger, chopped 150g lemongrass, chopped 4 litres water 2 lemons 10g yeast 1 pineapple, cut into chunks Instructions Bring 1 litre of water to the boil and add the ginger, lemongrass and sugar. Stir until the sugar has dissolved. Add the remaining water along with the lemon juice and zest and the yeast. Leave the mixture to rest for 10 to 12 hours before straining and refrigerating. Serve chilled with fresh pineapple. window.trCommon={"minRating":6,"ajaxurl":"https:\/\/www.citizen.co.za\/wp-admin\/admin-ajax.php","ratingNonce":"","postId":4709541}; window.TastyRecipes = window.TastyRecipes || {}; window.TastyRecipes.smoothScroll = { init() { document.addEventListener( 'click', ( e ) => { let anchor = e.target; if ( anchor.tagName !== 'A' ) { anchor = anchor.closest( 'a.tasty-recipes-scrollto' ); } if ( ! anchor || ! anchor.classList.contains( 'tasty-recipes-scrollto' ) ) { return; } const elementHref = anchor.getAttribute( 'href' ); if ( ! elementHref ) { return; } e.preventDefault(); this.goToSelector( elementHref ); }); }, goToSelector( selector ) { const element = document.querySelector( selector ); if ( ! element ) { return; } element.scrollIntoView( { behavior: 'smooth' } ); } }; document.addEventListener( 'DOMContentLoaded', () => window.TastyRecipes.smoothScroll.init() ); window.TastyRecipes = window.TastyRecipes || {}; window.TastyRecipes.staticTooltip = { element: null, tooltipElement: null, deleting: false, init( element ) { if ( this.deleting ) { return; } this.element = element; this.buildElements(); }, destroy() { if ( ! this.tooltipElement || this.deleting ) { return; } this.deleting = true; this.tooltipElement.classList.remove( 'opened' ); setTimeout( () => { this.tooltipElement.remove(); this.deleting = false; }, 500 ); }, buildElements() { const tooltipElement = document.createElement( 'div' ); tooltipElement.classList.add( 'tasty-recipes-static-tooltip'); tooltipElement.setAttribute( 'id', 'tasty-recipes-tooltip' ); const currentTooltipElement = document.getElementById( 'tasty-recipes-tooltip' ); if ( currentTooltipElement ) { document.body.replaceChild( tooltipElement, currentTooltipElement ); } else { document.body.appendChild( tooltipElement ); } this.tooltipElement = document.getElementById( 'tasty-recipes-tooltip' ); }, show() { if ( ! this.tooltipElement ) { return; } const tooltipTop = this.element.getBoundingClientRect().top + window.scrollY - 10 // 10px offset. - this.tooltipElement.getBoundingClientRect().height; const tooltipLeft = this.element.getBoundingClientRect().left - ( this.tooltipElement.getBoundingClientRect().width / 2 ) + ( this.element.getBoundingClientRect().width / 2 ) - 1; const posLeft = Math.max( 10, tooltipLeft ); this.maybeRemoveTail( posLeft !== tooltipLeft ); this.tooltipElement.setAttribute( 'style', 'top:' + tooltipTop + 'px;left:' + posLeft + 'px;' ); this.tooltipElement.classList.add( 'opened' ); }, maybeRemoveTail( removeTail ) { if ( removeTail ) { this.tooltipElement.classList.add( 'tr-hide-tail' ); } else { this.tooltipElement.classList.remove( 'tr-hide-tail' ); } }, changeMessage( message ) { if ( ! this.tooltipElement ) { return; } this.tooltipElement.innerHTML = message; } }; window.TastyRecipes.ajax = { sendPostRequest( url, data, success, failure ) { const xhr = new XMLHttpRequest(); xhr.open( 'POST', url, true ); xhr.send( this.preparePostData( data ) ); xhr.onreadystatechange = () => { if ( 4 !== xhr.readyState ) { return; } if ( xhr.status === 200 ) { success( JSON.parse( xhr.responseText ) ); return; } failure( xhr ); }; xhr.onerror = () => { failure( xhr ); }; }, preparePostData( data ) { const formData = new FormData(); for ( const key in data ) { formData.append( key, data[key] ); } return formData; }, }; window.TastyRecipes.ratings = { defaultRating: 0, currentRatingPercentage: 100, savingRating: false, init( minRating ) { this.minRating = minRating; this.formWatchRating(); this.closeTooltipWhenClickOutside(); this.addBodyClassBasedOnSelectedRating(); this.backwardCompFormRatingPosition(); }, formWatchRating() { const ratings = document.querySelectorAll('.tasty-recipes-no-ratings-buttons [data-rating]'); if ( ratings.length { event.preventDefault(); this.defaultRating = event.target.closest( '.checked' ).dataset.rating; this.setCheckedStar( event.target ); this.maybeSendRating( this.defaultRating, event.target ); this.setRatingInForm( this.defaultRating ); } ); } }, closeTooltipWhenClickOutside() { window.addEventListener( 'click', e => { // Bailout (don't remove the tooltip) when the clicked element is a rating star, or it's the tooltip itself. if ( e.target.closest( '.tasty-recipes-rating' ) || e.target.classList.contains( 'tasty-recipes-static-tooltip' ) ) { return; } window.TastyRecipes.staticTooltip.destroy(); } ); }, setRatingInForm( rating ) { const ratingInput = document.querySelector( '#respond .tasty-recipes-rating[value="' + rating + '"]' ); if ( ! ratingInput ) { return; } ratingInput.click(); }, addBodyClassBasedOnSelectedRating() { const ratingInputs = document.querySelectorAll( 'input.tasty-recipes-rating' ); if ( ! ratingInputs ) { return; } for ( const ratingInput of ratingInputs ) { ratingInput.addEventListener( 'click', currentEvent => { const selectedRating = currentEvent.target.getAttribute( 'value' ); this.handleBodyClassByRating( selectedRating ); this.toggleCommentTextareaRequired( selectedRating ); } ); } }, handleBodyClassByRating( rating ) { if ( rating < this.minRating ) { document.body.classList.remove( 'tasty-recipes-selected-minimum-rating' ); return; } document.body.classList.add( 'tasty-recipes-selected-minimum-rating' ); }, toggleCommentTextareaRequired( rating ) { const commentTextarea = document.getElementById( 'comment' ); if ( ! commentTextarea ) { return; } if ( rating < this.minRating ) { commentTextarea.setAttribute( 'required', '' ); return; } commentTextarea.removeAttribute( 'required' ); }, maybeSendRating( rating, element ) { if ( this.savingRating === rating ) { return; } this.savingRating = rating; window.TastyRecipes.staticTooltip.init( element ); const recipeCardElement = element.closest( '.tasty-recipes' ); if ( ! recipeCardElement ) { window.TastyRecipes.staticTooltip.destroy(); return; } window.TastyRecipes.ajax.sendPostRequest( window.trCommon.ajaxurl, { action: 'tasty_recipes_save_rating', rating, nonce: window.trCommon.ratingNonce, post_id: window.trCommon.postId, recipe_id: recipeCardElement.dataset.trId, }, ( response ) => { window.TastyRecipes.staticTooltip.changeMessage( response.data.message ); window.TastyRecipes.staticTooltip.show(); this.updateAverageText( response.data, recipeCardElement ); this.maybeFillCommentForm( response.data ); // Hide the tooltip after 5 seconds. setTimeout( () => { this.maybeResetTooltip( recipeCardElement, response.data, rating ); }, 5000 ); }, () => { this.resetTooltip( recipeCardElement ); } ); }, updateAverageText( data, recipeCardElement ) { if ( ! data.average ) { return; } this.setRatingPercent( data ); if ( ! data.count ) { return; } const quickLink = document.querySelector( '.tasty-recipes-rating-link' ); if ( quickLink ) { this.setTextInContainer( quickLink, data ); this.setPartialStar( quickLink ); } const cardStars = recipeCardElement.querySelector( '.tasty-recipes-ratings-buttons' ); cardStars.dataset.trDefaultRating = data.average; this.setTextInContainer( recipeCardElement.querySelector( '.tasty-recipes-rating' ), data ); }, setTextInContainer( container, data ) { if ( ! container ) { return; } if ( data.label ) { const ratingLabelElement = container.querySelector( '.rating-label' ); if ( ratingLabelElement ) { ratingLabelElement.innerHTML = data.label; } return; } const averageElement = container.querySelector( '.average' ); if ( averageElement ) { averageElement.textContent = data.average; } const countElement = container.querySelector( '.count' ); if ( countElement ) { countElement.textContent = data.count; } }, setPartialStar( container ) { const highestStar = container.querySelector( '[data-rating="' + Math.ceil( this.defaultRating ) + '"]' ); if ( highestStar ) { highestStar.dataset.trClip = this.currentRatingPercentage; } }, setRatingPercent( data ) { this.defaultRating = data.average.toFixed( 1 ); const parts = data.average.toFixed( 2 ).toString().split( '.' ); this.currentRatingPercentage = parts[1] ? parts[1] : 100; if ( this.currentRatingPercentage === '00' ) { this.currentRatingPercentage = 100; } }, setCheckedStar( target ) { const cardRatingContainer = target.closest( '.tasty-recipes-ratings-buttons' ); const selectedRatingElement = cardRatingContainer.querySelector( '[data-tr-checked]' ); if ( selectedRatingElement ) { delete selectedRatingElement.dataset.trChecked; } const thisStar = target.closest( '.tasty-recipes-rating' ); thisStar.dataset.trChecked = 1; thisStar.querySelector( '[data-tr-clip]' ).dataset.trClip = 100; }, maybeFillCommentForm( data ) { if ( ! data.comment || ! data.comment.content ) { return; } const commentForm = document.querySelector( '#commentform' ); if ( ! commentForm ) { return; } const commentBox = commentForm.querySelector( '[name=comment]' ); if ( ! commentBox || commentBox.value ) { return; } // Add comment details for editing. commentBox.innerHTML = data.comment.content; if ( data.comment.name ) { commentForm.querySelector( '[name=author]' ).value = data.comment.name; commentForm.querySelector( '[name=email]' ).value = data.comment.email; } }, maybeResetTooltip( recipeCardElement, data, rating ) { if ( this.savingRating === rating ) { this.resetTooltip( recipeCardElement, data ); } }, resetTooltip( recipeCardElement, data ) { window.TastyRecipes.staticTooltip.destroy(); this.savingRating = false; // Reset the default rating. const cardRatingContainer = recipeCardElement.querySelector( '.tasty-recipes-ratings-buttons' ); if ( cardRatingContainer ) { this.defaultRating = ( data && data.average ) ? data.average.toFixed(1) : cardRatingContainer.dataset.trDefaultRating; cardRatingContainer.dataset.trDefaultRating = this.defaultRating; this.resetSelectedStar( cardRatingContainer, data ); } }, resetSelectedStar( cardRatingContainer ) { const selectedRatingElement = cardRatingContainer.querySelector( '[data-rating="' + Math.ceil( this.defaultRating ) + '"]' ); if ( selectedRatingElement ) { selectedRatingElement.querySelector( '[data-tr-clip]' ).dataset.trClip = this.currentRatingPercentage; selectedRatingElement.parentNode.dataset.trChecked = 1; } const previousSelectedElement= cardRatingContainer.querySelector( '[data-tr-checked]' ); if ( previousSelectedElement ) { const currentSelectedRating = previousSelectedElement.querySelector('[data-rating]'); if ( currentSelectedRating !== selectedRatingElement ) { delete previousSelectedElement.dataset.trChecked; } } }, backwardCompFormRatingPosition() { const ratingsButtons = document.querySelector( '#respond .tasty-recipes-ratings-buttons, #tasty-recipes-comment-rating .tasty-recipes-ratings-buttons' ); if ( ! ratingsButtons ) { return; } const ratingsButtonsStyles = window.getComputedStyle(ratingsButtons); if ( ! ratingsButtonsStyles.display.includes( 'flex' ) ) { ratingsButtons.style.direction = 'rtl'; } if ( typeof tastyRecipesRating !== 'undefined' ) { // Select the rating that was previously selected in admin. ratingsButtons.querySelector( '.tasty-recipes-rating[value="' + tastyRecipesRating + '"]' ).checked = true; } const ratingSpans = ratingsButtons.querySelectorAll( '.tasty-recipes-rating' ); for (const ratingSpan of ratingSpans) { ratingSpan.addEventListener( 'click', event => { if ( ratingSpan === event.target ) { return; } ratingSpan.previousElementSibling.click(); } ); } } }; (function(callback) { if (document.readyState !== "loading") { callback(); } else { window.addEventListener( 'load', callback ); } })(() => { window.TastyRecipes.ratings.init( window.trCommon ? window.trCommon.minRating : 4 ); });
The South African
2 trophies secured: Can Sundowns win everything this season?
Could we be witnessing an even greater era of Mamelodi Sundowns’ dominance? Miguel Cardoso has led the Brazilians to 2 trophies so far, and more silverware could be coming their way. Here’s what Sundowns have won so far, and what else they could achieve domestically and continentally. What trophies have Mamelodi Sundowns won so far? Mamelodi Sundowns ended Orlando Pirates’ 4-year MTN8 winning streak on 10 October. The 2-0 win in Durban saw the Chloorkop giants claim their second piece of silverware this season. On 19 September, Sundowns defeated Saudi Arabia’s Al Ahli to seal the African-Asian-Pacific Cup, with Nuno Santos scoring a decisive brace. The clash formed part of the FIFA Intercontinental Cup, and the PSL giants have advanced to the Challenger Cup. If Sundowns win there, they will face European champions Paris Saint-Germain for the main Intercontinental Cup title. 𝙈𝘼𝙎𝘼𝙉𝘿𝘼𝙒𝘼𝙉𝘼 𝙉𝙀𝙑𝙀𝙍 𝙎𝙏𝙊𝙋 𝙍𝙄𝙎𝙄𝙉𝙂 👆Mamelodi Sundowns make history & conquer the Clash of the Continents and book a place in the Challenger Cup final! 🏆#Sundowns #FIFAIntercontinentalCup #NeverStopRising pic.twitter.com/nnDTWzjLj0— Mamelodi Sundowns FC (@Masandawana) September 19, 2026 What other domestic trophies are still up for grabs? Premier Soccer League Sundowns are top of the PSL table as they head into their away clash with Richards Bay FC tonight (13 October). Their lead over Orlando Pirates is just 1 point, and the Buccaneers also have a game in hand. However, the MTN8 title could be the fuel Sundowns need, while Pirates must move past the result quickly. The two main PSL contenders only meet again in January and April next year. Carling Knockout Cup Sundowns last tasted Carling Knockout Cup victory in the 2019/2020 season. The new competition kicks off on 24 October, according to the PSL website. Pirates are the defending champions, setting up a mouthwatering potential rematch down the line. Nedbank Cup We’re still a few months out from the Nedbank Cup. The PSL website confirmed this competition would run from 27 January to 1 May next year. Last season, Sundowns were shocked by TS Galaxy in the Round of 16. Pirates also fell out in the last 16, losing on penalties to Casric Stars. Durban City were the eventual winners, getting revenge on Galaxy on Sundowns’ behalf. What continental silverware can Sundowns still claim? Sundowns continue their CAF Champions League title defence with the second preliminary round against Angola’s Wiliete SC. The first leg is on 18 October at the Ombaka National Stadium, as confirmed by the club’s official website. The return leg comes 5 days later on 23 October at Loftus Versfeld in Pretoria. Matchdays in the competition’s group stage will be held across November, December, and January. Elsewhere, Sundowns also have the 2026 CAF Super Cup next month. This competition pits the previous season’s Champions League winner against the Confederation Cup victor. As confirmed by the CAF website, Sundowns face USM Alger – the date and venue have been listed as 8 November at Loftus by other sources. CAN MAMELODI SUNDOWNS WIN EVERYTHING THIS SEASON? Let us know who could stop their quest for success by clicking on the comment banner below.
The South African
These are South Africa’s best-rated shopping malls
South Africa is home to hundreds of shopping malls, but a handful stand out when it comes to customer ratings. A new ranking of almost 700 shopping centres has revealed the 10 best-rated malls in the country, based on more than 3.2 million Google reviews. The research, conducted by SEO Backlinks, found that The Greenery in Polokwane is South Africa’s best-rated shopping centre, with an average score of 4.68 stars from 1 153 reviews. It was followed by two high-profile Gauteng destinations, Melrose Arch and Nelson Mandela Square. South Africa’s top 10 shopping malls RankShopping centreLocationRatingReviews1The GreeneryPolokwane, Limpopo4.681 1532Melrose ArchJohannesburg, Gauteng4.662 3143Nelson Mandela SquareSandton, Gauteng4.6314 5154The Neighbourhood SquareLinksfield, Johannesburg4.612 4895Marine WalkSibaya, KwaZulu-Natal4.601 0116Loftus ParkArcadia, Pretoria4.593 4137Polofields CrossingWaterfall, Midrand4.591 5918Constantia EmporiumConstantia, Cape Town4.582 3789Castle Gate Shopping CentreWaterkloof Ridge, Pretoria4.586 64410La Lucia MalluMhlanga, KwaZulu-Natal4.573 251 Gauteng dominates the top 10 Gauteng has the strongest presence in the national top 10, with six shopping centres making the list. These include Melrose Arch, Nelson Mandela Square, The Neighbourhood Square, Loftus Park, Polofields Crossing and Castle Gate Shopping Centre. The province also has by far the largest number of centres included in the study, with 320 of the 678 shopping centres ranked. Interestingly, Gauteng’s overall average was 4.17 stars, slightly below the national average of 4.18. KwaZulu-Natal also performed strongly, with two centres in the national top 10. Marine Walk at Sibaya ranked fifth nationally with a 4.60-star average, while La Lucia Mall in uMhlanga came in tenth with 4.57 stars. KZN had 88 shopping centres included in the study and an overall average of 4.18 stars, putting it third among the provinces ranked. The Greenery in Polokwane took the number-one spot with a rating of 4.68, putting it ahead of some of South Africa’s most famous shopping destinations. The Western Cape had just one centre in the national top 10: Constantia Emporium, which scored 4.58 stars. The study’s overall average across all 678 shopping centres was 4.18 stars. How the ranking was calculated The research initially identified 1 197 South African shopping-mall listings with at least 300 Google reviews. After excluding closed centres, markets, single shops, office parks, duplicate listings and other unsuitable entries, 678 centres with at least 1 000 reviews remained. The researchers calculated each mall’s exact average using its one- to five-star review counts rather than relying on Google’s rounded rating. The data was collected on 5 October 2026, meaning the rankings reflect Google reviews available at that time.
TechCentral
Apple takes another shot at the smart home
Apple has unveiled the HomeView, a $299 smart-home hub built around Siri AI, as it takes on rivals in the connected home.
TechCentral
Icasa’s R100-million surplus and its empty toolbox
Icasa left R333.7-million unspent in 2025/2026 while telling parliament it lacks money for regulatory tools.