01What 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.
02Enable 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 the Detect the user's language from Telegram automatically switch, 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.
03Translate (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?"
04Edit 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.
05Let users choose (Set Language)
Some bots let people pick their own language instead of guessing. Buttons do not change the language by themselves. Each button leads to an Action block, and that block does the switch:
- Add a Message block, for example "Choose your language", with one button per language.
- Drag each button's output to a new Action block.
- In that Action block, click Add Action and pick Set Language.
- Leave Select language on, and choose the language in Language.
- Connect the Action block to whatever comes next, such as your main menu.
When someone taps a button, FlowCastle remembers their choice and uses it from then on.
06How the bot picks a language
For every message, FlowCastle picks a language in this order:
- Did the person already choose one with Set Language? Use that.
- Is auto-detect on, and does Telegram report their language? Use that.
- 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.
07Outdated 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.
08Limits
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 your own code or a formula is not translated.
- Broadcasts use the same translations as regular flows — nothing extra to set up.
- Translating doesn't publish anything by itself. Press Deploy after translating so the new text goes live.
09For advanced users
Two system variables let you use the language in your flows. You find both in the variable picker under System → User Fields:
- Language (
{{sysvar|language}}) is the language FlowCastle actually picked, after all three rules above. Use it in a Condition block to branch by language. - Language Code (
{{sysvar|languageCode}}) is the raw language Telegram sent, before any of that logic runs.
"A formula" in the limits above means a CEL expression — a short calculation some fields accept instead of plain text.
10Next up
Translations only reach people after you publish. Test the bot in each language, then deploy: Test and Deploy Your Bot.
