Listen to article
2 min listen
Audio reading is not supported on this browser.
Ready
Thanks for listening. Continue with a related story, or tap the speaker icon on the next page to listen.
Do tourists stress out safari animals? We tested their dung to find out
The Conversation
ย ยทย
2 days agoRead nextOpens a fresh page.
KWS said farmers in the two areas had endured months of sleepless nights as elephants repeatedly strayed into their farms, destroying crops and putting their livelihoods at risk.
The Kenya Wildlife Service (KWS) has launched a six-day operation to relocate five elephants from Mwea to a more suitable protected habitat in an effort to reduce human-wildlife conflict that has affected farming communities in Kamburu and Kivaa.
In a statement on Monday, KWS said farmers in the two areas had endured months of sleepless nights as elephants repeatedly strayed into their farms, destroying crops and putting their livelihoods at risk.
The agency added that every incursion also increased the risk of dangerous encounters between people and elephants.
More To Read
- Do tourists stress out safari animals? We tested their dung to find out
- Petitioners allege harassment during court-ordered visit to Nairobi National Park
- Sifuna seeks Senate probe into delayed Amboseli handover to Kajiado County
- Wajir woman in tears as KWS seizes ostrich she raised from a chick, cared for during drought
- High Court blocks Kajiado County from taking over Amboseli National Park
- Kajiado County, KWS clash over implementation of Amboseli National Park transfer deal
KWS said the translocation exercise is intended to ease the conflict by moving the elephants to a habitat that is better suited to their needs while improving the safety of surrounding communities.
“On the first day, two elephants were successfully moved, with the remaining translocations continuing over the coming days,” KWS said.
The agency emphasised that the exercise will benefit both people and wildlife, noting that communities can look forward to protecting their harvests with greater peace of mind while the elephants will have the opportunity to thrive in a habitat with enough food, water and space.
Latest Stories
- Court battle deepens over proposed NairobiโNakuru highway toll charges as KeNHA challenges COFEK suit
- Tana River, UNDP review food systems project amid food security and climate challenges
- UN report reveals 79 million Ethiopians face hunger as healthy food slips out of reach
- ๐๐๐ฌ๐ญ๐ฅ๐๐ข๐ ๐ก ๐๐จ๐ข๐๐ ๐๐ญ ๐๐ข๐ง๐ – Religious, cultural leaders warn politicians against dividing Kenyans
“Elephant translocations are complex conservation operations, requiring careful planning, scientific expertise, and dedicated field teams. Every successful move is another step toward safer communities, thriving wildlife, and lasting coexistence,” KWS said.
KWS added that the elephants will continue to be closely monitored to ensure they settle well into their new environment.
Other Topics To Read
Top Stories Today
- KeNHA challenges COFEK suit over proposed A8 highway tolls
- Boniface Mwangi wants corrupt officials sentenced to death
- Tana River, UNDP review food project to tackle hunger, climate crisis
- Over 92 million Ethiopians cannot afford a healthy diet, UN warns
- Justice sector unveils reforms to create paperless courts ahead of 2027 polls
- People living longer but spending more years in poor health, study finds
`;
}
return “;
}
function commentActionsMarkup(comment, canComment) {
const likeLabel = comment.liked_by_me ? ‘Liked’ : ‘Like’;
const likeCount = Number(comment.like_count || 0) > 0
? “
: ”;
const likeButton = canComment && comment.status === ‘approved’
? “
: “;
const replyButton = canComment && comment.status === ‘approved’
? “
: ”;
return `
`;
}
function commentMarkup(comment, canComment, isReply = false) {
const pendingBadge = comment.status && comment.status !== ‘approved’
? “
: ”;
const edited = comment.is_edited
? “
: ”;
const repliesHtml = Array.isArray(comment.replies) && comment.replies.length
? `
`
: “;
return `
`;
}
function replyFormMarkup(commentId) {
return `
`;
}
function setNotice(widget, message, type = ‘info’) {
const notice = widget.querySelector(‘[data-role=”notice”]’);
if (!notice) return;
if (!message) {
notice.hidden = true;
notice.textContent = ”;
notice.classList.remove(‘is-error’);
return;
}
notice.hidden = false;
notice.textContent = message;
notice.classList.toggle(‘is-error’, type === ‘error’);
}
function setCount(widget, total) {
const count = widget.querySelector(‘[data-role=”count”]’);
if (!count) return;
const num = Number(total || 0);
count.textContent = num === 1 ? ‘1 comment’ : `${num} comments`;
}
function openReplyBox(widget, commentId) {
widget.querySelectorAll(‘[data-role=”reply-box”]’).forEach(box => {
box.hidden = true;
box.innerHTML = ”;
});
const targetItem = widget.querySelector(`.ev-comments__item[data-comment-id=”${commentId}”]`);
if (!targetItem) return;
const replyBox = targetItem.querySelector(‘[data-role=”reply-box”]’);
if (!replyBox) return;
replyBox.hidden = false;
replyBox.innerHTML = replyFormMarkup(commentId);
const textarea = replyBox.querySelector(‘textarea’);
if (textarea) textarea.focus();
}
function closeReplyBox(container) {
if (!container) return;
container.hidden = true;
container.innerHTML = ”;
}
async function initCommentsWidget(widget) {
const state = {
articleId: Number(widget.dataset.articleId),
loadUrl: widget.dataset.loadUrl,
storeUrl: widget.dataset.storeUrl,
commentsBaseUrl: widget.dataset.commentsBaseUrl,
canComment: widget.dataset.canComment === ‘1’,
page: 1,
perPage: 10,
sort: ‘newest’,
total: 0,
hasMore: false,
busy: false
};
const list = widget.querySelector(‘[data-role=”list”]’);
const loading = widget.querySelector(‘[data-role=”loading”]’);
const empty = widget.querySelector(‘[data-role=”empty”]’);
const loadMoreBtn = widget.querySelector(‘[data-role=”load-more”]’);
const sortSelect = widget.querySelector(‘[data-role=”sort”]’);
const composerForm = widget.querySelector(‘[data-role=”composer-form”]’);
async function loadComments(reset = true) {
if (state.busy) return;
state.busy = true;
setNotice(widget, ”);
loading.hidden = false;
if (reset) {
state.page = 1;
list.innerHTML = ”;
empty.hidden = true;
}
try {
const url = new URL(state.loadUrl, window.location.origin);
url.searchParams.set(‘page’, state.page);
url.searchParams.set(‘per_page’, state.perPage);
url.searchParams.set(‘sort’, state.sort);
const response = await requestJson(url.toString(), {
method: ‘GET’,
headers: {
‘Accept’: ‘application/json’,
‘X-Requested-With’: ‘XMLHttpRequest’
}
});
const items = Array.isArray(response.data) ? response.data : [];
const meta = response.meta || {};
state.total = Number(meta.total || 0);
state.hasMore = !!meta.has_more;
setCount(widget, state.total);
if (reset) {
list.innerHTML = ”;
}
if (!items.length && reset) {
empty.hidden = false;
} else {
empty.hidden = true;
list.insertAdjacentHTML(
‘beforeend’,
items.map(item => commentMarkup(item, state.canComment, false)).join(”)
);
}
loadMoreBtn.hidden = !state.hasMore;
} catch (error) {
if (!list.children.length) {
empty.hidden = false;
empty.textContent = ‘Unable to load comments right now.’;
}
setNotice(widget, error.message || ‘Unable to load comments.’, ‘error’);
} finally {
loading.hidden = true;
state.busy = false;
}
}
async function submitTopLevelComment(form) {
const textarea = form.querySelector(‘textarea[name=”content”]’);
const button = form.querySelector(‘[data-role=”submit-comment”]’);
if (!textarea) return;
const content = textarea.value.trim();
if (!content) return;
const originalText = button ? button.textContent : ”;
try {
if (button) {
button.disabled = true;
button.textContent = ‘Posting…’;
}
const response = await requestJson(state.storeUrl, {
method: ‘POST’,
headers: buildJsonHeaders(),
body: JSON.stringify({
article_id: state.articleId,
content: content,
source_url: window.location.href
})
});
textarea.value = ”;
if (response?.data) {
list.insertAdjacentHTML(
‘afterbegin’,
commentMarkup(response.data, state.canComment, false)
);
empty.hidden = true;
if ((response.data.status || ”) === ‘approved’) {
state.total += 1;
setCount(widget, state.total);
}
}
setNotice(widget, response.message || ‘Comment posted successfully.’);
} catch (error) {
setNotice(widget, error.message || ‘Unable to post comment.’, ‘error’);
} finally {
if (button) {
button.disabled = false;
button.textContent = originalText || ‘Post comment’;
}
}
}
async function submitReply(form) {
const commentId = Number(form.dataset.commentId || 0);
const textarea = form.querySelector(‘textarea[name=”content”]’);
const button = form.querySelector(‘.ev-comments__reply-submit’);
if (!commentId || !textarea) return;
const content = textarea.value.trim();
if (!content) return;
const originalText = button ? button.textContent : ”;
try {
if (button) {
button.disabled = true;
button.textContent = ‘Posting…’;
}
const response = await requestJson(`${state.commentsBaseUrl}/${commentId}/reply`, {
method: ‘POST’,
headers: buildJsonHeaders(),
body: JSON.stringify({
article_id: state.articleId,
content: content,
source_url: window.location.href
})
});
if (response?.data) {
const parentItem = widget.querySelector(`.ev-comments__item[data-comment-id=”${commentId}”]`);
if (parentItem) {
const repliesWrap = parentItem.querySelector(‘.ev-comments__replies’);
if (repliesWrap) {
repliesWrap.insertAdjacentHTML(
‘beforeend’,
commentMarkup(response.data, state.canComment, true)
);
}
}
}
closeReplyBox(form.closest(‘[data-role=”reply-box”]’));
setNotice(widget, response.message || ‘Reply posted successfully.’);
} catch (error) {
setNotice(widget, error.message || ‘Unable to post reply.’, ‘error’);
} finally {
if (button) {
button.disabled = false;
button.textContent = originalText || ‘Post reply’;
}
}
}
async function toggleLike(button) {
const commentId = Number(button.dataset.commentId || 0);
if (!commentId) return;
const originalHtml = button.innerHTML;
try {
button.disabled = true;
button.innerHTML = ‘Working…’;
const response = await requestJson(`${state.commentsBaseUrl}/${commentId}/like`, {
method: ‘POST’,
headers: buildJsonHeaders(),
body: JSON.stringify({})
});
const liked = !!response?.data?.liked;
const likeCount = Number(response?.data?.like_count || 0);
button.classList.toggle(‘is-liked’, liked);
button.innerHTML = `${liked ? ‘Liked’ : ‘Like’} ${likeCount > 0 ? “ : ”}`;
} catch (error) {
button.innerHTML = originalHtml;
setNotice(widget, error.message || ‘Unable to update like.’, ‘error’);
} finally {
button.disabled = false;
}
}
if (composerForm) {
composerForm.addEventListener(‘submit’, function (e) {
e.preventDefault();
submitTopLevelComment(composerForm);
});
}
if (sortSelect) {
sortSelect.addEventListener(‘change’, function () {
state.sort = this.value || ‘newest’;
loadComments(true);
});
}
if (loadMoreBtn) {
loadMoreBtn.addEventListener(‘click’, function () {
if (state.busy || !state.hasMore) return;
state.page += 1;
loadComments(false);
});
}
widget.addEventListener(‘click’, function (e) {
const likeBtn = e.target.closest(‘[data-action=”toggle-like”]’);
if (likeBtn) {
e.preventDefault();
toggleLike(likeBtn);
return;
}
const replyBtn = e.target.closest(‘[data-action=”toggle-reply”]’);
if (replyBtn) {
e.preventDefault();
openReplyBox(widget, Number(replyBtn.dataset.commentId || 0));
return;
}
const cancelReplyBtn = e.target.closest(‘[data-action=”cancel-reply”]’);
if (cancelReplyBtn) {
e.preventDefault();
closeReplyBox(cancelReplyBtn.closest(‘[data-role=”reply-box”]’));
}
});
widget.addEventListener(‘submit’, function (e) {
const replyForm = e.target.closest(‘.ev-comments__reply-form’);
if (replyForm) {
e.preventDefault();
submitReply(replyForm);
}
});
loadComments(true);
}
document.addEventListener(‘DOMContentLoaded’, function () {
document.querySelectorAll(‘.ev-comments’).forEach(initCommentsWidget);
});
})();
Trending
Tana River, UNDP review food systems project amid food security and climate challengesCoast
|Farhiya Hussein
|45 minutes ago

Rain, strong winds and cool weather expected over the next 24 hours – WeathermanNews
|Lucy Mumbi
|11 hours ago
Somalia opposition calls for transitional council, urges international backing amid political crisisSomalia
|Abdirahman Khalif
|10 hours ago
Boniface Mwangi vows death penalty for corruption if elected president in 2027 electionsPolitics
|Abdirahman Khalif
|2 hours ago
High Court halts prosecution of three officials over South C Manzil Towers collapseCity Affairs
|Carolyne Kubwa
|4 hours ago
Somalia seeks explanation from Kenya after officials reportedly denied entry on arrival in NairobiSomalia
|Abdirahman Khalif
|5 hours ago
Two men sentenced to death for violent robbery of boda boda rider in WajirNews
|Lucy Mumbi
|7 hours ago
More years, more illness: Why healthy ageing is becoming a global challengeHealth
|Charity Kilei
|2 hours ago

AfDB warns Africa faces Sh2.58 trillion loss from predicted ‘super’ El NiรฑoAfrica
|Lucy Mumbi
|13 hours ago
Pressure mounts on NCIC to act as unapologetic Duale defies calls to retract ethnic remarksNews
|Barack Oduor
|3 hours ago
