Languages & RTL
How Wallu's AI answers customers in their own language automatically, how to set the chat widget's display language, and Arabic / right-to-left support.
Languages & RTL
There are two separate things going on when it comes to language in Wallu, and it helps to keep them apart:
- What language the AI answers in — this is automatic. The AI replies in whatever language the customer wrote in. You do not configure this per customer, and there is no language dropdown to set.
- What language the widget's own buttons and labels show in — the "Start Chat" button, the message placeholder, the online/offline status. This is display chrome, and you *can* pin it or let it follow the visitor's browser.
Right-to-left (RTL) support for Arabic ties into the second one: when the widget's display language is Arabic (or another RTL language), the whole panel flips direction.
The AI answers in the customer's language automatically
When a visitor types a question, the message goes to the AI exactly as written. The model answers back in the same language. A customer who writes in Spanish gets a Spanish answer; one who writes in Arabic gets an Arabic answer — in the same conversation, without any setting.
This means:
- You do not set a language per customer or per conversation.
- You do not need separate widgets, agents, or knowledge bases per language. One knowledge base written in your own language still lets the AI answer in the customer's language.
- It works the same across every channel — web widget, Discord, Telegram, Instagram, email — because they all run through the same AI reply path.
There is no toggle to turn this on. It is just how the AI behaves. The only thing you control is the *widget display language* below.
Setting the widget's display language
The widget's built-in labels ship translated for English, Spanish, French, German, and Arabic. These cover strings like *Start Chat*, *Search for help*, *We're online / We're away*, *Type a message…*, *Still need help?*, *Contact Support*, *Back*, and *Read more*. There are two ways to choose which one shows.
Option 1 — pin one language in the embed snippet
If your site is in a single language, set it explicitly in the widget's config. The embed snippet Wallu generates for you (in Settings → Integrations / Widget) looks like this:
<script>
window.WALLU_CONFIG = { token: 'YOUR_TOKEN', position: 'right' };
</script>
<script defer src="https://app.wallu.ai/wallu-widget.js"></script>
Add a language key with an ISO 639-1 code:
<script>
window.WALLU_CONFIG = { token: 'YOUR_TOKEN', position: 'right', language: 'ar' };
</script>
The loader passes that language into the widget, and the panel renders in it. Arabic (ar) also flips the whole widget to RTL (see below).
Good to know: you can drive the display language from *either* place — the snippet is not mandatory. The generated snippet does not include language by default; you add it yourself only when you want to pin a language on a specific page, and an explicit snippet language wins if both are set. But a language saved in your dashboard's widget config also reaches the embedded widget: Wallu's public config endpoint returns that saved language to the loader, so a dashboard-only change *does* set the display language (and RTL, and the launcher pill) with no snippet edit. When the snippet omits language, the widget simply falls back to your saved dashboard value. The rest of your visual styling (colors, launcher icon, welcome text) loads from the dashboard the same way.
Option 2 — follow the visitor's browser language (Auto-Translate)
If you'd rather not hard-code a language, turn on Auto-Translate in Settings → Widget. Its description reads *"Auto-translate messages to the user's browser language."* With it on and no explicit language set, the widget adopts the visitor's browser language for its labels.
<!-- SCREENSHOT: The Auto-Translate toggle in Settings → Widget, showing the globe icon and the description text -->
Because the built-in labels only exist for English, Spanish, French, German, and Arabic, a browser set to one of those shows translated chrome. A browser set to any other language (say Japanese) falls back to English labels — but the AI still answers the customer in their own language, since that part is independent of the widget chrome.
Resolution order
When the widget decides which display language to use, it checks, in order:
- An explicit
languagefrom the embed snippet. - The
languagesaved in your dashboard widget config (returned by the public config endpoint). - If Auto-Translate is on: the visitor's browser language.
- Otherwise: English.
Only the base code matters — ar-EG and ar-SA both resolve to ar.
Arabic and right-to-left (RTL)
When the resolved display language is Arabic — ar — the widget switches to a full right-to-left layout. The direction is applied to the widget's root container, so the entire panel mirrors: text aligns right, the send button and message bubbles flip sides, and the launcher pill reads in Arabic (*تواصل معنا*) instead of the default *Get support*.
<!-- SCREENSHOT: The chat widget in Arabic, showing the mirrored RTL layout with right-aligned text and the Arabic launcher pill -->
Arabic is the RTL language with full label translations. The widget also recognizes Hebrew (he), Persian/Farsi (fa), Urdu (ur), Pashto (ps), and Sindhi (sd) as RTL — setting any of these flips the layout to right-to-left — but those five do not have translated built-in labels yet, so the chrome falls back to English text inside an RTL layout. The AI's actual replies are unaffected: it answers in the customer's language regardless.
Note on the launcher button: the launcher pill only switches to Arabic/RTL when the widget already knows the language before the panel opens — that is, when you set language: 'ar' in the snippet *or* save Arabic in your dashboard widget config (both reach the loader up front). Under Auto-Translate alone, with no explicit language set, the pill stays in its default text until the visitor opens the panel; the opened panel then follows the browser language. If you want the closed launcher to read in Arabic, pin language: 'ar' in the snippet or set Arabic in your dashboard config.
The dashboard's own language is separate
Everything above is about the customer-facing widget. The dashboard you log into has its own, independent language system.
You can switch the dashboard interface between English, Arabic, Romanian, Italian, and Spanish from the account menu (the language row with the globe/chevron). Your choice is remembered in your browser.
- The dashboard's language set (en / ar / ro / it / es) is different from the widget's (en / es / fr / de / ar) — they are two separate translation systems, so don't expect the same list in both places.
- Dashboard translation is being rolled out screen by screen. Translated screens display in your chosen language (and Arabic screens render RTL per-screen); screens not yet translated stay in English. Nothing breaks — untranslated text just falls back to English.
- Changing the dashboard language has no effect on the widget or on how the AI answers customers. It only changes what *you* see while managing Wallu.
<!-- SCREENSHOT: The account menu language switcher listing English, العربية, Română, Italiano, Español -->
Quick reference
- AI reply language: automatic, follows the customer, no config, every channel.
- Widget labels: English, Spanish, French, German, Arabic built in. Pin via
language:in the snippet or in your dashboard widget config, or follow the browser with Auto-Translate. - RTL: Arabic flips the whole widget and has full labels; Hebrew, Farsi, Urdu, Pashto, and Sindhi flip layout but fall back to English labels.
- Dashboard UI: English, Arabic, Romanian, Italian, Spanish — switched from the account menu, separate from the widget.
For the embed snippet and where to find your widget token, see Channels and Getting Started. For where the Auto-Translate toggle lives, see Settings.