Multilingual Telegram Bot
Serving two languages badly is worse than serving one well. The good news is that Telegram already tells you which language each person uses, so most of the decision is made for you.
What Telegram gives you
Every message a bot receives carries the language code the person has set in their Telegram app: tr, en, ru, fa and so on. You get it for free, on the first message, before anyone chooses anything.
It is a strong signal and not a promise. People run their phone in English while speaking something else, tourists arrive with their home setting, and shared devices exist. So use it to pick a sensible default and always leave a visible way to switch.
One bot or two?
This is the real decision and it is worth five minutes of thought, because reversing it later means moving subscribers you cannot move.
One bot, two languages, when:
- Both audiences want the same things. A restaurant serving locals and visitors has one menu, one address and one set of hours.
- The same person answers all the messages.
- You want one subscriber list, so an announcement can reach everyone.
Two bots, when:
- The offer genuinely differs by market, such as different prices, different services or different legal terms.
- Different people or teams handle each language.
- The bot name and description matter to you. Those are set once per bot in BotFather, so a single bot cannot show a Turkish description to one visitor and an English one to another.
That last point catches people out. Everything inside the conversation can be bilingual; the profile the person sees before pressing Start cannot.
Building one bot for two languages
The pattern that works, in order:
- Write the welcome message in both languages, one under the other, short. Two or three lines each. This is the only message that has to carry both, and it exists so nobody is stuck at the front door.
- Put two buttons under it, one per language, each opening the menu for that language.
- Keep the two menus separate from there. A Turkish command answers in Turkish and offers Turkish buttons. Mixing languages inside one flow is the mess to avoid.
- Double up your keyword replies. Price triggers in both languages point at the answer in the language the word was written in, which is a reliable signal since people type in the language they want to be answered in.
Name commands in a way you can keep straight, for example menu and menu_en. Six months later you will thank yourself.
Forms and the language of the flow
A form is where the language setting matters most, because the flow adds its own text around your questions, such as the hint telling people how to cancel. Those helper lines follow the language set on the bot.
So match that setting to the language most of your form traffic uses. If forms are central to your business and both languages carry real volume, that is usually the argument for running a bot per language.
Broadcasting to the right people
This is where the language code earns its keep. A broadcast can be narrowed to the language groups you choose, which means one bot can serve two audiences properly: write the announcement twice and send each version to its own group. Nobody receives a message they cannot read, and nobody has to scroll past a second copy.
It also gives you a genuine measurement. If one language group blocks at twice the rate of the other, that is usually a translation problem rather than a content problem. Telegram broadcast messages covers segmentation and cadence.
What not to do
- Do not machine translate prices, policies or legal text. Everything else, maybe. These, never. The mistakes surface when a customer acts on one.
- Do not put both languages in every message. The welcome message, yes. After that it doubles the length of everything and both audiences read a wall.
- Do not rely only on the language code. Always leave a switch, because the signal is wrong often enough to matter.
- Do not add a third language before the second one is working. Every language multiplies the maintenance of every future change.
What to measure
- Subscribers per language. Often a surprise, and it tells you where to spend the effort.
- Completion rate per language. A gap between the two usually means a bad translation, not a bad flow.
- Block rate per language group after a broadcast.
- Fallback rate per language, since keyword lists are usually thinner in the second language and it shows.
Frequently asked questions
Does Telegram tell the bot which language someone speaks?
It reports the language set in their app, such as tr or en. Treat it as a default, not a fact, and always offer a switch.
One bot or two?
One if both audiences want the same things and one person answers. Two if the offer, the team or the bot profile text needs to differ.
How do the two languages get written?
You write each message in each language you serve, which is more work up front and considerably safer for prices and policies.
Can I broadcast to one language only?
Yes, where broadcasts can be segmented by language code. Write the announcement twice and send each to its own group.
Serve both languages properly
Language menus, keyword replies in each language, and broadcasts you can send to one language group at a time. No code, no server.
Build Your Bot FreeKeep reading
- Telegram broadcast messages, segmenting a send
- Telegram bot description best practices, the profile texts you set once
- Telegram bot UX best practices, keeping the flow short
- Telegram FAQ bot, doubling up your keyword lists