A Telegram bot in English and Uzbek: going multilingual
Multilingual support in a bot is not a toggle you bolt on in an hour. Done carelessly, it annoys users more than having no translation at all.
How to select a language
The language should be chosen explicitly at first launch with buttons, not inferred automatically from Telegram's interface language. Many users in Uzbekistan run their interface in English or Russian while writing in Uzbek, and auto-detection gets this wrong often.
The choice must persist and be switchable at any time through a simple command or menu item — locking a user to their first choice forever is inconvenient for people who switch languages themselves.
Why auto-translation fails
Machine translation of formal phrasing and short button labels often sounds unnatural in Uzbek, especially when the source text was written with Russian grammar in mind. Users notice instantly and lose trust in the bot.
Texts must be written separately for each language by a native or fluent speaker, not run through a translator from one source. This applies even to short strings like button labels.
What is easy to forget to localize
Error messages, order-status notification texts, out-of-hours auto-replies — these strings often end up in only one language because they get written last, in a hurry.
Check date, number and currency formats too: how amounts and dates are written differs between languages, and a mismatch reads as sloppiness even when the text itself is translated correctly.
The cost of going multilingual
Adding a second language to an existing bot usually adds 15–25% to project cost — this is not text translation but separate logic for storing the choice and duplicate versions of every message.
Plan for multiple languages from the start of the project rather than as a later add-on: retrofitting a bot's architecture for a second language afterward costs more than designing for it from day one.