Government to classify hotels nationwide to boost tourism sector
Government to classify hotels nationwide to boost tourism sector
Read this story aloud
Listen to the clean text version of this article
Ready
4 min listen
Audio reading is not supported on this browser.
Ololtuaa stated that the program to classify all hotels will be conducted in the financial year 2024/2025
The Kenyan government is set to undertake a nationwide hotel classification exercise to boost the tourism sector.
According to Tourism Principal Secretary John Ololtuaa, the classification is crucial in elevating the status of hotels and ensuring quality assurance of services to attract more tourists. Ololtuaa stated that the program to classify all hotels will be conducted in the financial year 2024/2025.
Speaking at Neptune Beach Hotel in Diani during the 20th symposium for the Kenya Association of Hotel Keepers and Caterers (KAHC), Ololtuaa said the exercise will be conducted by the Tourism Authority Board using the East African Classification Criteria, which has been approved by the East African Community.
More To Read
- Kenya eyes MICE tourism to drive 5 million annual international visitors by 2028
- Governor Abdulswamad Nassir pushes for open skies policy to boost tourism, investment
- Mombasa showcases coastal heritage as Our Ocean Conference draws global visitors
- Tourism stakeholders warn Ebola misinformation is hurting travel bookings
- Man rescued after five-months in alleged captivity by traditional healer in Kwale
- Panic in Maasai Mara as aircraft skids off runway after landing failure, three escape unhurt
The symposium was attended by hotel keepers and other tourism stakeholders from the Coast. The EAC criteria cover town and vacation hotels, lodges, tented camps, motels, villas, cottages, and serviced apartments.
“Classification is crucial because it gives hotels the mark of quality and makes it easy for tourists to know what we have as a country,” said Ololtuaa.
The hotels will be classified as either five, four, or three-star hotels, making them easier to identify and market. This exercise will prompt hotels to maintain their standards and enhance service delivery.
Latest Stories
- Government extends security operation in Marsabit, declares multiple areas dangerous for 30 more days
- Three arrested after Linda Mwananchi convoy attacked in Kisii as police hunt for more suspects
- Mbappé fires France past Paraguay into World Cup quarter-finals
- Cherotich, Odira shine as Kenya dominates Prefontaine Classic despite rare Kipyegon defeat
“The government is determined to improve the tourism industry and will do all it takes to bring back its lost glory,” Ololtuaa stated.
The exercise aims to increase the number of both domestic and international tourists from the current two million to five million by 2027. Ololtuaa added that the exercise will also ensure that hotels and workers meet the required operational standards to provide tourists with first-class services.
“The government plans to improve quality hospitality skills in public and private colleges to raise hotel and staff standards,” he said.
Kwale Governor Fatuma Achani addressing the press outside Neptune Beach Hotel hall in Diani. (Photo: Mishi Gongo)
He added that the Tourism Ministry is also looking forward to tapping into medical tourism to keep the sector afloat. “We have so many patients from East Africa coming to our country for specialised treatment,” he said.
At the same time, Ololtuaa applauded tourism stakeholders for creating employment for many youths in the country.
“In tourism, that is a plus because for us to be able to attract international and domestic tourists, there must be proper accommodation and conference facilities that they are going to use,” he said.
The PS noted that the tourism sector has recorded significant growth from 2022 when 1.4 million tourists visited the country, earning Sh268 billion. “We hope to grow from the current two million to five million by 2027,” he said.
The PS further revealed that they have launched a program with County Governments to develop unique tourist attraction sites in the counties.
He assured Kwale Governor Fatuma Achani of the government’s commitment to supporting the construction of a convention centre in the Matuga sub-county.
Governor Fatuma said they have invested in developing Kwale as a prime tourist destination through the opening up of beach access roads, construction of washrooms, pedestrian walkways, and enhancement of beach safety through the employment of lifeguards and Tourism Enforcement Officers.
The establishment of a Conference and Cultural Centre, christened Bomas of Kwale, is one of Governor Fatuma’s flagship projects.
“We also intend to put up a tourist market in Diani. In addition, we are optimistic about developing Kongo Beach into a Halal Beach to boost religious tourism,” she added.
Other Topics To Read
Top Stories Today
- Three arrested after Linda Mwananchi convoy attacked in Kisii as police hunt for more suspects
- State extends security operation in Marsabit, declares multiple areas dangerous for 30 more days
- Mbappé fires France past Paraguay into World Cup quarter-finals
- Cherotich, Odira shine as Kenya dominates Prefontaine Classic despite rare Kipyegon defeat
- Weekly new Ebola cases reach highest level since outbreak began: WHO
- Kenya reaffirms ties with Rwanda as it marks Liberation Day celebrations
`;
}
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
Three arrested after Linda Mwananchi convoy attacked in Kisii as police hunt for more suspectsNews
|Lucy Mumbi
|37 minutes ago
Cherotich, Odira shine as Kenya dominates Prefontaine Classic despite rare Kipyegon defeatSports
|Erick Kariuki
|1 hour ago
Portugal edge Croatia in dramatic finish to book last-16 spotSports
|The New Times
|2 days ago
Morocco continue historic rise with record-breaking World Cup victory against CanadaSports
|Erick Kariuki
|9 hours ago
UN Rights Chief Volker Türk issues ‘Red Alert’ over escalating violence in Sudan’s El ObeidNews
|Mary Wambui
|1 day ago
Somalia intelligence agency kills Al-Shabaab mortar unit leader in Basra operationSomalia
|Bashir Mbuthia
|11 hours ago
IGAD pushes regional action to tackle plastic pollutionNews
|Rachael Mutabasi
|20 hours ago
Court declares Ruaraka School land public, rules Sh1.5 billion payout illegalNews
|Carolyne Kubwa
|12 hours ago
Ethiopia coffee exports hit record Sh388 billion on rising global demandRegional
|Bashir Mbuthia
|1 day ago
Egypt end 92-year wait to reach World Cup last 16News
|Erick Kariuki
|1 day ago