FlowCastle/Docs/Multilingual Bots: One Bot, Many Languages

Multilingual Bots: One Bot, Many Languages

Write each message once, add translations for the languages you support, and FlowCastle sends every person the right text — automatically.

4 min read·Last updated: 2026-08-21
Write each message once, add translations for the languages you support, and FlowCastle sends every person the right text — automatically.

Guide

  1. 1

    What it does

    A bot can speak more than one language. You write each message once. You add translations for the other languages. FlowCastle sends each person the text in their own language — and picks the right button labels too. This works in every flow, and in broadcasts.

  2. 2

    Enable languages

    Go to Settings → General → Languages. Set your source language — the language your flows are already written in. Add any additional languages you want to support; any language works, not just a fixed list.

    Turn on "Detect the user's language from Telegram automatically" and FlowCastle will read each person's language from their Telegram app. Leave it off and everyone gets your source language until they pick one themselves.

    Under each language you added, you see a status row: how many texts are still missing, how many are outdated, and a link that opens the editor straight to that language.

  3. 3

    Translate (AI chat)

    The fast way to translate a bot is to ask for it. In the flow editor, click ✨ Translate all, next to the Language switch. Or open the AI chat and type something like "translate the bot to Russian."

    Before it does anything, the chat shows a cost card: 0.2 credit per block per language. Blocks that are already translated and up to date cost nothing. Confirm, and it translates everything missing or outdated. When it finishes, you get Deploy and Undo buttons, the same way a build does.

    You don't have to use exact wording. "translate the bot to Spanish" works, and so does Russian: "переведи бота на немецкий". If you just want to know how it works, ask in Ask mode: "how do I translate my bot?"

  4. 4

    Edit a translation by hand

    Open a flow. If your app has additional languages, a Language switch sits at the top of the canvas: 🇬🇧 EN · source, 🇷🇺 RU, and so on. Pick a language and the whole canvas switches to it — every block shows that language's text.

    Blocks missing a translation get a small chip: RU ○ means missing, RU ◐ means outdated. Next to the switch, a counter tells you the total: "RU: 3 missing · 2 outdated."

    Open a message block while RU is selected, and you're editing the Russian text and the Russian button labels. The English source stays visible above each field, greyed out, so you can see exactly what you're translating. You can't add or remove buttons, change media, or touch settings here — that structure is shared by every language. Switch back to the source language to change it.

  5. 5

    Let users choose (Set language)

    Some bots let people pick their own language instead of guessing. Add a menu — "Choose your language" — with one button per language. Set each button's action to Set language, and pick the language for that button. When someone taps it, FlowCastle remembers their choice and uses it from then on.

  6. 6

    How the bot picks a language

    For every message, FlowCastle picks a language in this order:

    1. Did the person already choose one with Set language? Use that.
    2. Is auto-detect on, and does Telegram report their language? Use that.
    3. Otherwise, use your source language.

    If someone's language isn't one of the ones you added, they get the source language — same as if nothing were set at all.

    Two variables let you use this in your flows. {{sysvar|language}} is the language FlowCastle actually picked, after all three rules — use it in conditions to branch by language. {{sysvar|languageCode}} is the raw language Telegram sent, before any of that logic runs.

  7. 7

    Outdated translations

    Edit a source text later, and every translation of it flips to outdated — it doesn't disappear or get deleted. FlowCastle keeps sending the outdated version until you fix it: a stale translation is still better than none.

    Run Translate all again, and it re-does everything missing or outdated. Translations you wrote by hand yourself are kept — Translate all only overwrites them if you explicitly choose to redo everything, not just what's missing or outdated.

  8. 8

    Limits

    A few things fall outside translation, on purpose:

    • Missing translation → the bot sends the source text. You never get a blank message.
    • Dynamic button labels — buttons whose text comes from a variable — are not translated. You're already controlling that text.
    • Text built by custom code or a CEL expression is not translated.
    • Broadcasts use the same translations as regular flows — nothing extra to set up.
    • Translating doesn't publish anything by itself. Redeploy your bot after translating so the new text goes live.

Next Guide

Continue with
Message Node Basics
Use this guide to write better Message nodes in FlowCastle, add clear buttons, and personalize replies with variables.

Related Guides

More guides to help you continue from this topic.