Messages in several languages
Send each person an automation's SMS, WhatsApp, Telegram and email messages in their own language, with built-in translations.
An automation's messages go to whoever each one is addressed to: a reminder to every guest on a list, a receipt to a customer, an alert to your team. With built-in translations, you write each message once and add its translations, and Buni.ai sends each person the one in their language.
Set up the languages
Open Project settings and select the Languages tab.
| Setting | What it does |
|---|---|
| Your flow is written in | The language your messages are written in. Anyone Buni.ai has no other language for gets these. |
| Languages you serve | The languages you translate into. A message is only sent in a language listed here. |
| For other languages, use | Which served language someone gets when theirs isn't served. For example, Wolof speakers can get French instead of the original. |
| Send SMS in plain letters | Off by default. See SMS length and accents. |
Language settings are built into the automation when you publish. Save, then republish for them to reach live runs.
Translate a message
- Open a Messaging node and select its Translations tab, or open an Integration node that sends a message and find its Languages section.
- Pick a language at the top. Each message is listed with its original above an input for the translation.
- Save the node, then republish.
A translation uses the original's variables, such as {{input.item.name}}. Select one under the input to insert it. A translation can't add a variable of its own, so a translator can change what a message says but never what it does. A message with no translation in someone's language is sent in the original.
To translate every message in the automation at once, open the canvas's More menu and select Translations. See The Translations workspace, which works the same way in automations, including Translate with AI and translator sheets.
What can be translated
| Node | What is translated |
|---|---|
| Messaging | Message |
| Integration: WhatsApp, Send text message | The message |
| Integration: WhatsApp, Send media message | The caption |
| Integration: Telegram, Send message, Send photo, Send document | The message or caption |
| Integration: Twilio or Infobip, Send SMS | The message |
| Integration: Gmail or Microsoft Outlook, Send email | The subject and body |
| Integration: SendGrid, Send email | The subject, text and HTML |
Only text you typed into the node is translated. A value the node gets from an earlier step, such as a message an AI Agent wrote, is sent as it is. To send a WhatsApp template in several languages, see WhatsApp templates.
Which language each person gets
Each sending node has a Send in setting once the project serves more than one language: under Message in a Messaging node, and in the Languages section of an Integration node.
| Send in | Who gets which language |
|---|---|
| The recipient's saved language | The default. Buni.ai finds the contact the message is going to, by the phone number, email address or Telegram chat it is sent to, and uses the language saved on them. |
| The conversation's language | The language in the run's {{state.lang}}, when a step has set one. |
| A language from the flow | A language code such as fr, or a variable that holds one, such as {{input.item.language}} for a guest list with a language column. |
Contacts get a saved language from their conversations with your chatbots, when the chatbot's Remember each contact's language setting is on. Someone with no contact, or no saved language, gets the language in {{state.lang}} if the run has one, and the original otherwise.
A regional language, such as fr-CA, gets the translation for its base language, fr.
WhatsApp templates
WhatsApp only delivers a template in a language Meta has approved it in, and each language is approved separately, so a template's languages are set up in WhatsApp Manager rather than translated in the flow.
- In WhatsApp Manager, add each language to the template under the same name, and wait for approval.
- Open the Integration node that sends the template. Under Languages, turn on Template languages for each language you approved. Buni.ai fills in the code Meta uses, such as
pt_BRfor Portuguese andrw_RWfor Kinyarwanda. Change it if your template was approved under a different one, such aspt_PT. - Save the node, then republish.
Each person then gets the variant for their language. Everyone else gets the language set in Configure Tool. If Meta says the template has no variant in someone's language, the message is sent once more in the language set in Configure Tool, so a missing approval never stops a reminder.
The values filled into a template's placeholders are sent as they are.
SMS length and accents
An SMS holds 160 characters, or 153 a part when it is split. One character outside the basic SMS alphabet, such as ê, ç, a curly quote or an emoji, switches the whole message to the alphabet for all languages, which holds 70 characters, or 67 a part. A French or Portuguese translation can therefore cost twice its original.
The Messaging node shows this as you type, for the message and each translation: how many parts it is sent as, which alphabet it uses, and which characters forced the longer one. Variables are counted as written, so the real length depends on what they hold.
Send SMS in plain letters sends Messaging node SMS with those characters spelled in plain letters: ê as e, ç as c, curly quotes as straight ones. Letters the basic alphabet has, such as é, à and ü, stay as they are, and so does anything with no plain spelling, such as an emoji. Leave it off when the accents matter more than the cost.
The AI builder
When you ask the AI builder for an automation in several languages, it writes the messages once and adds their translations, and keeps a node's existing translations when it edits it. Add the languages under Languages you serve for them to be sent.