RTL Layout Support
Better Messages automatically mirrors its entire interface for right-to-left languages — Arabic, Hebrew, Persian (Farsi), Urdu, and any other language WordPress identifies as RTL. There's no separate RTL theme, no admin toggle, and no per-user setting — the messenger detects the site language direction and adapts everything: message bubbles, conversation list, navigation, input field, toolbars, attachments, and call UI.
What it adds#
- Automatic detection of WordPress site language direction (no manual configuration)
- Full interface mirroring — message bubbles align right, avatars on the right, controls on the left
- Works with all 30+ shipped translations including ar, he, fa, fa_IR, ar_DZ, ar_MA, ur, ar_SY, ar_LB
- Same RTL behavior in DMs, group chats, chat rooms, mini-chats, and the mobile app
- Compatible with all integrations — BuddyPress, BuddyBoss, PeepSo, UM, etc. all render RTL correctly
- No extra plugin or addon required
How it works#
WordPress sets is_rtl() to true when the active locale is one of its known RTL languages (or when a translation file declares RTL). Better Messages reads this flag on every render and:
| UI element | RTL behavior |
|---|---|
| Message bubbles | Own messages on the left, others' on the right (mirrored) |
| Conversation list | Avatar on the right, name + last message reading right-to-left |
| Message input | Cursor starts on the right, text flows right-to-left |
| Toolbar (emoji, attachment, send) | Mirrored — send button on the left |
| Conversation header | Title and back arrow mirrored |
| Mini-chat popups | Open from the bottom-left instead of bottom-right |
| Call UI | Controls mirrored, participant grid order reversed |
| Notification badges | Position adapted to RTL flow |
Mixed content (an Arabic message that contains an English URL or code block) is handled correctly — bidirectional Unicode rules apply within each message, so the URL stays left-to-right inside the RTL bubble.
Supported RTL languages#
The plugin ships with translations and tested RTL support for:
| Language | WordPress locale codes |
|---|---|
| Arabic (multiple dialects) | ar, ar_DZ, ar_MA, ar_SY, ar_LB, ar_EG, ar_SA |
| Hebrew | he_IL |
| Persian / Farsi | fa_IR, fa_AF |
| Urdu | ur |
Any RTL language not in this list is still supported visually — the layout mirrors based on is_rtl(). You just may need to provide your own .po translation file if the strings aren't bundled.
How to enable#
RTL activates automatically when the WordPress site language is set to an RTL language.
Set the site language at WP Admin → Settings → General → Site Language.
For per-user multilingual sites (where some users prefer Arabic and others English), pair this with a translation plugin like TranslatePress or WPML — RTL direction follows the user's chosen language automatically.
Frequently asked questions#
Does RTL break any feature?#
No. Every feature — voice/video calls, attachments, emoji picker, AI bots, mini-chats — is RTL-aware. If you spot a UI element that doesn't mirror, that's a bug — report it on the support forum.
How does RTL interact with the mobile app?#
The mobile app respects the device's language direction. If the user's iOS/Android system is set to Arabic or Hebrew, the entire app mirrors. The web app respects WordPress site language; they're independent.
Can a single user override RTL to use LTR layout?#
No per-user override exists. Direction is driven by site (or device on mobile) language. To allow LTR within an Arabic site, use a multilingual plugin and let users switch language.
What about CSS customizations — will they break RTL?#
The plugin uses logical CSS properties (margin-inline-start instead of margin-left, etc.) wherever direction matters. Custom CSS that uses physical properties (margin-left) will work in LTR but may need mirroring for RTL.
Is the AI chat bot's response in RTL too?#
Yes — the AI's response is just text. If the conversation is in Arabic, the AI replies in Arabic (using the configured AI provider's language detection), and the bubble renders right-to-left.
See also#
- Translations — 30+ language packs bundled with the plugin
- Mobile app — iOS / Android with RTL support
- AI message translation — auto-translate messages between languages