KelantanLingo: An Idea I Had to Build
Building an AI-powered Kelantanese–Modern Malay translator single-handedly, from a classroom idea to an Android app—and wondering how far it could go.
An idea worth building
KelantanLingo began with a simple question: could a mobile app help people understand the Kelantanese dialect, and translate it into Modern Malay—or the other way around?
The original idea came from a lecturer associated with the Academy of Malay Studies (Akademi Pengajian Melayu, APM) at Universiti Malaya. Its purpose went beyond convenience. A dialect carries identity, humour, familiar expressions, and a sense of belonging. When you do not understand it, you miss more than the literal meaning of a sentence.
As a final-year Computer Science student at Universiti Malaya, I took on the development of that idea. It became my final-year project: “Development of a Mobile Application for Translating Modern Malay to Kelantan Dialect and Vice Versa.” I called it KelantanLingo.
The language context came through collaboration with APM. The software development was mine to carry, single-handedly: bringing the mobile interface, application services, language data, and AI integration together into something people could use.
A local dialect-learning app
The bigger vision for KelantanLingo was always a dialect-learning app: something like Duolingo, but a local version focused on Kelantanese and Modern Malay. Translation would be the starting point. Eventually, I wanted people to learn the expressions, practise them, and become comfortable using the dialect themselves.
To my ears, Kelantanese is the hardest dialect to understand in Semenanjung Malaysia when you are unfamiliar with it. That difficulty made it a meaningful place to begin. I wanted to build a bridge between the Malay people already knew and the Kelantanese they might hear in everyday conversation.
For the first version, I kept the scope to Kelantanese–Malay. I was thinking about encounters here in the peninsula, where Kelantanese felt closer to the everyday need I wanted to address. Sabah and Sarawak were outside that initial scope: they were farther from the setting I was building for, and their speakers were less present in the encounters I had in mind.
But the dream does not have to stop at Kelantan. Maybe one day, this could grow into a full dialect-learning app spanning Malaysia's Malay communities, regions, and states, with room for Sabah and Sarawak too. Each would need its own language work and contributions from the people who speak it. For now, I want to make this first bridge work well enough to imagine building the next.
Carrying the whole build
An idea can fit inside one sentence. Building it means answering all the questions that sentence leaves out.
How should someone enter a phrase? Where should the translation appear? What does the app need to remember? How do accounts, settings, and profiles fit around the main experience? And what happens when the model produces a translation that looks convincing but misses the meaning?
Working alone meant moving between those concerns myself. A screen needed an implementation. An implementation needed data. A translation needed evaluation. Each part depended on another, and I had to keep bringing them back to the same purpose: helping someone understand a language they might otherwise struggle to follow.
The challenge was getting all those parts to work together, not simply getting a translation box onto a screen.
From concept to Android
I built KelantanLingo for Android using React Native and Expo, with Expo Router handling navigation. Firebase Authentication supported account access, Cloud Firestore held application data, and Cloudinary handled profile pictures.
Around the translation experience, I added Malay and English interface options, light and dark themes, profile handling, and audio-related functionality. Those details mattered because I wanted the project to feel like an application someone could return to, rather than a model demonstration they would try once.
The visual identity followed that same intention: maroon and gold, a deer-inspired logo, and the tagline “Speak For The Heritage.” It gave the app a connection to the culture behind the language.
Teaching the model a dialect
The interface was only one part of the work. Behind it was a harder question: how do you teach a model to translate a dialect whose vocabulary, spelling, and phrasing do not always follow standard Malay?
The project included a dataset of approximately 2,700 rows and experiments with T5-based translation approaches. I also published a model on Hugging Face under the name amrlhqmii/kelantanlingo-mt5, exploring translation in both directions: Modern Malay to Kelantanese, and Kelantanese back to Modern Malay.
During development, I evaluated model output using BLEU, which compares generated translations with reference translations. One reported experiment reached approximately 0.43. It was a useful signal, but it did not settle the question of whether the app understood every phrase correctly.
Context, local usage, and spelling variation still mattered. A result could be close to a reference and still need a speaker's judgement. That made the language work an ongoing responsibility, rather than a stage I could declare finished once the model ran.
My goal for the user stayed simple: give them one useful translation, clearly presented, without burying it beneath unnecessary alternatives.
A milestone beyond the classroom
KelantanLingo received a silver medal at UM iFEST 2025, held from 24 to 26 June 2025.
For me, that recognition marked a moment when the work reached beyond the final-year-project setting. An idea, a dataset, a translation model, and an Android application had come together into a project I could present.
The medal was a milestone. The larger ambition still lay ahead: making the translations more dependable and the application useful to more people.
What comes after a working app?
Building KelantanLingo taught me how much responsibility sits behind a small interface. When you develop it single-handedly, every layer becomes yours to understand, connect, and improve.
The next steps are clear in principle: broaden the dataset, evaluate translations with Kelantanese speakers, account for regional and contextual variation, and make the application reliable as more people use it. Doing those things well is a much bigger undertaking than naming them.
That is where the project stands for me: a working foundation, and a future that still asks more of it.
Maybe one day
I have high hopes for KelantanLingo—for this mobile app, for AI-powered translation between Kelantanese and Modern Malay, and for the people it could help understand one another.
I want it to grow beyond a final-year project. I want someone unfamiliar with the dialect to feel a little less lost, and someone who speaks it every day to see their language treated with care.
But can we really make it scalable enough? Can it serve more people without losing the nuance that made it worth building in the first place?
I do not have that answer yet. I have the work I have done, the possibilities I can see, and the hope that this small beginning could become something much larger.
A personal note: I still own the kelantanlingo.com domain, and I’m working towards completing KelantanLingo as a scalable mobile application. There is still a long way to go. Wish me luck.
Maybe one day.